2

我正在尝试实现这种在两个不同应用程序之间共享首选项的伟大技术,同时仍然是 MODE_PRIVATE。

我的问题是第一个应用程序不能假设第一个应用程序已安装(反之亦然),因此:

 Context c = createPackageContext("com.app.first", MODE_PRIVATE);

必须替换为:

 Context c = createPackageContext("com.app.shared", MODE_PRIVATE);

但这要求com.app.shared真正添加它,这会转化为第二个 APK?

换句话说,每个 APK只有 一个,每个清单文件只有一个。因此每个 APK 只有一个实际包?AndroidManifest.xml <manifest package= >

我不希望每个应用程序有 2 个 APK,我只希望每个应用程序有一个 APK。

有没有办法做到这一点?

4

1 回答 1

2

我正在尝试实现这种在两个不同应用程序之间共享首选项的伟大技术,同时仍然是 MODE_PRIVATE。

实际上,这是一种反伟大的技术,我刚刚删除了我的答案。使用android:sharedUserId是有风险的,对于已经部署的应用程序来说是完全不可能的。自从我在那里发布答案以来的两年里,我发现了我的方式的错误。

此外,该技术不能可靠地工作,因为您无法控制用户安装和卸载哪些应用程序。如果 App A 和 App B 都通过使用 App A 的副本来共享偏好,那么当用户卸载 App A 时,App B 就会被冲洗掉。

因此每个 APK 只有一个实际包?

正确的。

我不希望每个应用程序有 2 个 APK,我只希望每个应用程序有一个 APK。

对于两个应用程序,您有两个 APK 文件,每个文件都有自己的包名称。

于 2012-08-03T22:39:19.520 回答