我正在尝试在两个不同的应用程序中实现this great technique共享首选项,同时仍然是MODE_PRIVATE。
我的问题是第一个应用程序不能假设安装了第一个应用程序(反之亦然),因此:
Context c = createPackageContext("com.app.first", MODE_PRIVATE);
必须替换为:
Context c = createPackageContext("com.app.shared", MODE_PRIVATE);
但是,这要求将com.app.shared
添加为真实,这转化为第二个APK?
换句话说,每个APK只有只有一个 AndroidManifest.xml
,每个清单文件只有只有一个 <manifest package= >
。因此每个APK只有一个实际包裹?
我不希望每个应用程序有2个APK,每个应用程序只需要一个APK。
有没有办法实现这个目标?
答案 0 :(得分:2)
我正在尝试实现这种在两个不同应用程序之间共享首选项的优秀技术,同时仍然是MODE_PRIVATE。
实际上,这是一种反对伟大的技术,我刚刚删除了我的答案。使用android:sharedUserId
是有风险的,对于已部署的应用程序来说,这是完全不可能的。自从我在那里发布答案以来的两年里,我了解了自己的方式错误。
此外,该技术无法可靠地运行,因为您无法控制用户安装的应用程序...并卸载。如果App A和App B通过使用App A的副本共享首选项,那么当用户卸载App A时,App B就会被软管化。
因此每个APK只有一个实际包裹?
正确。
我不希望每个应用程序有2个APK,每个应用程序只需要一个APK。
对于两个应用程序,您有两个APK文件,每个文件都有自己的包名称。