我需要将数据存储在Android设备上,并希望从不同的应用程序(通过后台服务)访问这些数据。
我们可以使用外部存储来实现这一目标。但是,如果它是可移动的,则可能在安装到PC或移除时无法使用。那么,是否有永久不可移动的全局存储总是可用于每个Android设备上的所有应用程序?如果是这样我将如何访问它。
请指导我。提前谢谢。
答案 0 :(得分:0)
但是,如果它是可移动的,则可能在安装到PC或移除时无法使用。
"安装在PC"在Android 3.0+上不是问题,但它在Android 1.x / 2.x上。在Android 3.0+设备上很少可以移除外部存储。
那么,每个Android设备上的所有应用程序是否都有永久不可移动的全局存储空间?
外部存储空间尽可能接近您。这意味着您可能希望重新考虑原始计划。根据应用程序的性质,答案可能是一个应用程序拥有内部存储的数据,并通过ContentProvider
将数据提供给套件中的其他应用程序。与外部存储相比,它具有更细粒度的安全可能性。
答案 1 :(得分:0)
每台运行android 4.0+的设备都基于MTP (MEDIA TRANSFER PROTOCOL),这意味着如果您将设备安装到PC上,它仍可供您的应用程序使用,因此不必担心它太多。你必须阅读一些关于此的过时文章。
编辑:根据CommonsWare的答案,它甚至可以达到3.0+,但运行Android 3.x的设备非常罕见,基本上已经死了。
答案 2 :(得分:0)
文件系统存储无法帮助您,因为您的应用程序可以读取/写入每个其他应用程序的任何位置都可以读取/写入/删除,并且最终会出现与sdcard部分类似的情况。
BTW:连接到PC时卸载SD卡部分仅适用于onld过时的设备。目前的设备只使用MTP协议,允许同时从Android和PC进行访问。
如果有多个应用程序在一起工作,那么可以通过多种方式在彼此之间共享数据:
答案 3 :(得分:0)
您可以将内部存储空间与FileOutputStream
一起使用,因为它解释了here in the documentation。
默认情况下,这些文件对您的应用是私有的,但您可以使用Context.MODE_WORLD_WRITEABLE
或Context.MODE_WORLD_READABLE
进行更改。
但请注意,因为它可能会导致您的应用程序出现一些安全问题。也许您可以使用Intents或其他方式在您的应用之间建立链接。
有关详细信息,请参阅documentation。
答案 4 :(得分:0)