可以在具有相同sharedUserId的应用程序之间共享strings.xml吗?

发布于 2024-12-02 02:54:51 字数 509 浏览 1 评论 0原文

我知道当两个应用程序具有相同的sharedUserId时,可以共享SharedPreferences(使用以下内容):

Context secondApp = createPackageContext("com.example.secondapp", 0);
SharedPreferences secondAppPreferences = secondApp.getSharedPreferences("name_of_shared_preferences_file", 0);

但是是否可以共享“strings.xml”文件中的字符串,以便我可以从中获取字符串数组第二个应用程序的stings.xml?

我已经尝试过:

secondApp.getResources().getStringArray(R.array.name_of_arr); 

但它在“R.array.name_of_arr”中的“array”上抛出错误(数组无法解析或不是字段)

I know that it is possible to share SharedPreferences (using the following) when the two apps have the same sharedUserId:

Context secondApp = createPackageContext("com.example.secondapp", 0);
SharedPreferences secondAppPreferences = secondApp.getSharedPreferences("name_of_shared_preferences_file", 0);

but is it at all possible to share strings from the "strings.xml" file so that i can get a string-array from the second app's stings.xml??

i have tried:

secondApp.getResources().getStringArray(R.array.name_of_arr); 

but it throws an error (array cannot be resolved or is not a field) on "array" in "R.array.name_of_arr"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一袭白衣梦中忆 2024-12-09 02:54:51

可以在 Android 应用程序之间共享“数据”(文件、首选项、公开数据),但不能内置资源(即通过 R 映射的内容)。这些资源对于每个应用程序都是私有的。

It is possible to share "data" (files, preferences, exposed data) between Android applications, but not built in Resources (i.e. the stuff mapped through R). These Resources are all private per application.

时光病人 2024-12-09 02:54:51

在两个不同的应用程序之间共享字符串或任何其他数据是不可能的。

This is impossible to share strings or any other data between two different applications.

小…红帽 2024-12-09 02:54:51

我知道这个问题已经有十年了,但由于此时接受的答案不正确,所以我添加了一个答案。

如果两个应用程序具有相同的 sharedUserId 并使用相同的证书签名,则可以

fun Context?.getSettingsContext() = this?.createPackageContext("com.android.settings", Context.CONTEXT_RESTRICTED)

获取上下文(在本例中为本机设置),然后

with(settingsContext.resources) {
        val resId = getIdentifier("accessibility_screen_magnification_gestures_title", "string", "com.android.settings")
        Log.d(TAG, "titleId: ${getString(resId)}")
}

也在 响应。

I know this question is ten years old, but since the accepted answer is incorrect at this point in time, I'm adding an answer.

If the two apps have the same sharedUserId and signed with the same certificate then it's possible to

fun Context?.getSettingsContext() = this?.createPackageContext("com.android.settings", Context.CONTEXT_RESTRICTED)

to get the context (from in this case native settings), and then

with(settingsContext.resources) {
        val resId = getIdentifier("accessibility_screen_magnification_gestures_title", "string", "com.android.settings")
        Log.d(TAG, "titleId: ${getString(resId)}")
}

also mentioned in this response.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文