我正在开发一组需要共享常见状态和配置设置的复杂Android应用程序。
例如,请参阅此图片解释我的方案:
我希望APP 1,APP 2和APP 3能够访问(读/写)公共存储区域的数据。 此外,我需要卸载保护,即当用户卸载任何应用时,我不希望删除数据。
我已经阅读过有关SQLite数据库,ContentProviders和内部和外部存储的文章,但上述每种方法都有以下缺点:
修改
我不想要依赖Google Play服务,因为我将通过Play商店和第三方下载分发这些应用。
请帮帮我。
答案 0 :(得分:1)
Google云端硬盘有点适合您。您基本上可以获得由远程文件系统支持的本地文件系统的权限。在大多数手机上都会预先安装,因此您担心的卸载问题不是问题。
您可以为应用创建一个可以读/写的文件夹。
答案 1 :(得分:1)
您可以使用共享首选项对象从文件中读取和写入首选项数据。最重要的是使用MODE_MULTI_PROCESS。如果多个进程正在改变相同的SharedPreferences文件,则使用位MODE_MULTI_PROCESS。
使用以下代码:
SharedPreferences shPrefernces = context.getSharedPreferences("filename", MODE_MULTI_PROCESS);
String s1 = shPrefernces.getString("keytosearch1", "");
String pass = shPrefernces.getString("keytosearch2", "");
答案 2 :(得分:0)
我同意使用world_readable的共享偏好设置不适合您,或者无法通过互联网共享,但您仍然可以做一件事。
使用广播接收器和自定义广播。 具有共享首选项的所有应用程序中的冗余公共数据
谁更新数据会向系统发送广播。 所有应用程序都实现广播接收器当收到新广播时,他们会更新共享偏好中的数据。 App A - >在数据更新时发送广播。
如果已安装App B,App B也会接收广播并保存该意图中的数据。
如果App B更新新数据。 APP B - >发送广播的公共数据 其他应用程序将更新数据。
答案 3 :(得分:0)
首选项数据将始终存储在每个应用程序自己的上下文中。使用sharedUserId并在所有应用程序中创建新的首选项文件。在打开每个应用程序时,应用程序必须检查所有其他应用程序上下文中的首选项值,并应根据首选项中可用的上次更新时间值写入其首选项,以查找最新更新的时间值。
每当打开任何应用程序时,最新数据将存储在其本地。如果安装或卸载了任何应用程序,这应该可以正常工作。