我试图实现this great technique跨两个不同的应用程序共享首选项,同时仍MODE_PRIVATE。在同一个APK中可能有两个包?
我的问题是第一个应用程序不能假设第一个应用程序安装(反之亦然)等:
Context c = createPackageContext("com.app.first", MODE_PRIVATE);
必须替换为:
Context c = createPackageContext("com.app.shared", MODE_PRIVATE);
但是,任务增加那com.app.shared
是真的,它转换成第二个APK?
换句话说,有只有一个AndroidManifest.xml
每APK和只有一个<manifest package= >
每清单文件。因此,每个APK只有一个实际包装?
我不希望每个应用程序有2个APK,我只希望每个应用程序有一个APK。
有没有办法做到这一点?
谢谢你救了我一个灾难性的方法。我现在意识到,尽管“共享”偏好的“广告”可用性,但它需要很多解决方法和技巧,因此这必定有些不安全。我现在认为,通过[内容提供商](http://developer.android.com/guide/topics/providers/content-providers.html),在应用程序之间共享任何内容的正确方法。我在正确的方向吗? – ef2011 2012-08-03 23:06:04
@ ef2011:在应用程序之间共享信息的方式有很多 - “ContentProvider”是一种可能性。就个人而言,在这种情况下,当应用程序的首选项发生更改时,我会发送许可保护的广播,以便由其他应用程序获取并应用于其自己的副本。这样,通过两个应用程序镜像设置,您就不必担心一个应用程序被卸载,并且同时使用这两个应用程序的设置。此外,你不关心哪个应用程序首先安装。而且,作为一个附带的好处,它可以无缝地扩展到三个或更多的应用程序,如果需要的话。 – CommonsWare 2012-08-03 23:22:44
不幸的是,由于[INSTALL_FAILED_CONFLICTING_PROVIDER](http://stackoverflow.com/q/6273592/722603)限制(即两个不同的包不能共享相同的内容提供者),ContentProvider甚至不可能。所以,看起来**唯一的方法就是你建议的“许可保护广播”。任何可以了解更多信息的链接? – ef2011 2012-08-07 18:08:20