是否有可用于每个Android设备上的应用程序的永久不可移动全局存储?

时间:2015-05-07 14:44:25

标签: android android-external-storage

我需要将数据存储在Android设备上,并希望从不同的应用程序(通过后台服务)访问这些数据。

我们可以使用外部存储来实现这一目标。但是,如果它是可移动的,则可能在安装到PC或移除时无法使用。那么,是否有永久不可移动的全局存储总是可用于每个Android设备上的所有应用程序?如果是这样我将如何访问它。

请指导我。提前谢谢。

5 个答案:

答案 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进行访问。

如果有多个应用程序在一起工作,那么可以通过多种方式在彼此之间共享数据:

  1. 在每个应用程序中使用sharedUserId功能(AndroidManifest.xml)。
  2. 制作一个"存储应用"有一个或多个Provider用于访问来自不同应用程序的数据。使用自定义权限保护它们。

答案 3 :(得分:0)

您可以将内部存储空间与FileOutputStream一起使用,因为它解释了here in the documentation

默认情况下,这些文件对您的应用是私有的,但您可以使用Context.MODE_WORLD_WRITEABLEContext.MODE_WORLD_READABLE进行更改。

但请注意,因为它可能会导致您的应用程序出现一些安全问题。也许您可以使用Intents或其他方式在您的应用之间建立链接。

有关详细信息,请参阅documentation

答案 4 :(得分:0)

  1. 对于轻量级原语(字符串/整数等),您可以写入系统设置,最终用户很难删除。
  2. 您可以使用标记Context.MODE_WORLD_READABLE公开应用的数据。
  3. 将ContentProvider用于结构化数据。使用权限和权限,以便只允许您的应用程序读/写内容提供商。
  4. 外部存储,但正如您所说,不可靠。它上面的数据是公开的,所有应用程序和最终用户都可以看到。用户和一些清洁应用程序可以轻松删除这些数据。