我在我的 Android 应用程序中使用共享首选项来存储一些数据。我希望这些数据可用于其他应用程序,但仅限于我制作的应用程序。
(我知道无论我做什么,任何已经 root 手机的人都可以使用这些数据)
经过大量搜索,我发现了两种可能的方法。
将共享首选项模式设置为私有(private)。使用 shareduserid 并使用相同的 key 签署所有应用程序。然后使用原始应用上下文访问私有(private)共享首选项。 Sort of shown here但是非常老,不确定是否仍然可行,因为我无法让它工作。
使用内容提供者访问共享首选项。- 然而,问题是我找不到关于如何使用共享首选项执行此操作的单个教程。好像大家都用sqlite数据库。我正在努力调整它以使用共享首选项,因为查询功能似乎需要使用游标,而共享首选项不使用游标。
最佳答案
所以我已经解决了!如果其他人发现这很有用..我们开始吧:
我继续研究选项 1(参见问题)并发现满足 2 个条件以允许应用共享资源。
SharedUserID
在 list 中,我将以下行放在标记下
android:sharedUserLabel="@string/id" android:sharedUserId="com.example"
在字符串 id 中我输入了“samsid”——可以是任何东西,只要它对两个应用程序都是一样的。
使用相同 key 签名的应用
Eclipse 在调试您的应用时使用相同的调试器 key ,因此在您将应用发布到 Play 商店之前无需担心这一点。
要通过上下文访问其他应用程序资源,我使用了以下内容:
try {
otherAppsContext = createPackageContext("com.example.samstest", 0);
} catch (NameNotFoundException e) {}
其中“com.example.samstest 是设置共享首选项的应用程序。 然后在制作共享首选项对象时使用“otherAppsContext”,以便以通常的方式检索数据。
关于android - 共享偏好内容提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23424917/