我在Android应用程序中使用共享首选项来存储一些数据。我希望这些数据可供其他应用程序使用,但仅限于我已制作的数据。
(我知道无论我做什么,这些数据都可供任何使用手机的人使用)
经过广泛搜索后,我发现了两种可能的方法。
将共享首选项模式设置为私有。使用shareduserid并使用相同的密钥对所有应用进行签名。然后使用原始应用程序上下文访问私有共享首选项。 Sort of shown here但是很老,不确定是否仍然可行,因为我无法让它发挥作用。
使用内容提供程序访问共享首选项.-但问题是我无法找到有关如何使用共享首选项执行此操作的单个教程。每个人似乎都使用sqlite数据库。我很难适应这个使用共享prefs,因为查询函数似乎需要使用游标,共享prefs不使用。
答案 0 :(得分:1)
所以我已经解决了!如果有其他人发现这个有用......我们去:
我继续致力于选项1(请参阅问题)并找到了允许应用共享资源的2个条件。
<强> SharedUserID 强>
在Manifest中,我将以下行放在标记
下 android:sharedUserLabel="@string/id"
android:sharedUserId="com.example"
在字符串ID中我放了“samsid” - 可以是任何东西,只要两个应用程序都相同。
使用相同密钥签名的应用
Eclipse在调试应用程序时使用相同的调试器密钥,因此在将应用程序放在Play商店之前无需担心这一点。
要通过上下文访问其他应用资源,我使用了以下内容:
try {
otherAppsContext = createPackageContext("com.example.samstest", 0);
} catch (NameNotFoundException e) {}
其中“com.example.samstest是设置共享首选项的应用程序。 然后在制作共享首选项对象时使用“otherAppsContext”以便以通常的方式检索数据。