如何在Android中跨一组应用程序共享数据
考虑以下场景。一家公司发布了许多应用程序。他们希望在所有这些应用程序中共享一些数据。这些应用程序中的任何一个都可以创建或读取这些数据,就像普通数据库一样。所以公司决定创建一个android库来实现这个目的。我搜索了几天,下面给出了我的分析如何在Android中跨一组应用程序共享数据,android,sharedpreferences,android-contentprovider,android-external-storage,Android,Sharedpreferences,Android Contentprovider,Android External Storage,考虑以下场景。一家公司发布了许多应用程序。他们希望在所有这些应用程序中共享一些数据。这些应用程序中的任何一个都可以创建或读取这些数据,就像普通数据库一样。所以公司决定创建一个android库来实现这个目的。我搜索了几天,下面给出了我的分析 SharedReferences-不建议使用,已弃用。它也不起作用。所有其他应用程序都需要知道创建数据的应用程序的程序包名称才能创建PackageContext。在这里,这是不切实际的,因为任何应用程序都可以创建/更新/读取数据,并且不可能说出谁是谁 Cont
注意:对于iOS,我们使用keychain实现相同的功能似乎您需要的是 它允许应用程序沙箱在多个android应用程序之间共享,如果它们都由相同的签名签名
但是,小心 是的。在所有应用程序的外部存储中使用相同的路径可能是最好的方法。代码的公共部分可用于了解数据库是否存在,从而打开或创建新的数据库。为了安全起见,我建议在连接数据库时始终使用“用户”和“密码”,但如果您认为这还不够,我建议您查看以下内容:了解Android上的问题 具有讽刺意味的是,由于iOS上的密集沙箱,如果需要共享数据的应用程序都是由同一个开发人员开发的,那么有一种简单的方法可以实现这一点(应用程序组)。很可能是因为安卓在安全性方面更灵活,这实际上是一个更困难的问题。到目前为止,安卓团队认为不适合提供一种方便、安全的方式来专门共享此类数据,因为存在一种低安全性的解决方法 也就是说,有很多方法可以在不涉及云的情况下在应用程序之间共享数据 共享参考资料 原始问题指出SharedReference已被弃用。据我所知,这不是真的,但是MODE_WORLD_可读和MODE_WORLD_可写上下文已被弃用,这使得这种方法在将来可能无法工作。不过,自安卓4.2(2012年)以来,这种模式已经有相当一段时间被弃用了。在当前的Android文档中,没有任何威胁表明他们实际上正在逐步淘汰它(有时不赞成只是意味着“这不是一个好主意”而不是“这将被删除”)。我怀疑,在设置级别缺乏更安全的操作系统级别的直接应用程序数据共享替代方案,这可能是过去5年中将其保留在弃用状态的原因 文件访问 据我所知,在Android上实现应用程序间数据共享的最简单也是最常见的方法就是简单地请求设备上的文件访问,并在外部存储器上为这些数据创建一个共享位置。(不要被“外部存储”的名称所迷惑——这正是Android指共享数据的方式。它不一定指SD卡。)你给文件一个唯一的名称,然后把它存储在你的应用程序知道在哪里查找的地方。获得该路径的最佳方法如下: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u文档) 这方面的明显问题是安全性。虽然操作系统并不反对它,但它引入了与Android文档列表相同的问题,作为反对“世界”模式的原因——它本质上是不安全的,并在应用程序中打开了潜在的漏洞
- 您正在将信息放置在一切都可以访问的位置 它
- 您正在请求应用程序可能不需要的权限
- 您正在读取无法验证其来源的文件