gpt4 book ai didi

android - 如何在两个不同的 Android 应用程序之间共享 SharedPreferences 文件?

转载 作者:IT王子 更新时间:2023-10-28 23:34:28 25 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间。基本上,我希望有两个应用程序(它们将始终安装在一起)共享首选项,其中一个只是在后台运行并需要使用首选项的服务(应该拥有首选项,但只有 真正 需要读取它们)并且另一个应用程序是前端 UI 应用程序,它需要能够写入另一个应用程序拥有的首选项文件。该服务将在后台执行操作(可能由首选项决定),用户界面将允许用户编辑首选项并查看来自服务的一些信息。但是,它们将是不同的包/应用程序。

我尝试关注 this tutorial这让我很好地了解了如何在一个应用程序中设置可以被另一个应用程序读取的偏好。本质上,我通过 myContext = createPackageContext("com.example.package",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); 创建一个新上下文,然后调用 myContext.getSharedPreferences("pref_name", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); 但是,我无法从外部应用程序成功写入首选项 - (SharedPreferences.Editor).commit() 返回 false 并且我在 logcat 中收到关于无法执行的警告编辑 pref_name.xml.bak。

如何成功设置我的应用程序,以便它们都可以读取和写入相同的首选项文件(存储在其中一个的数据文件夹中)?

最佳答案

最好为文件设置私有(private)模式。应用需要使用相同的证书集签名才能共享此文件。

将两个应用中的 sharedUserId 设置为相同。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hello"
android:versionCode="1"
android:versionName="1.0"
android:sharedUserId="com.example">
....

从其他包中获取上下文:

mContext = context.createPackageContext(
"com.example.otherapp",
Context.MODE_PRIVATE);
mPrefs = mContext.getSharedPreferences("sameFileNameHere", Activity.MODE_PRIVATE);

照常从 SharedPreference 中获取项目。您现在可以访问它了。

关于android - 如何在两个不同的 Android 应用程序之间共享 SharedPreferences 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11025234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com