以编程方式访问Verizon HTC Droid Incredible(Android)的内部存储(非SD卡)

13

我正在寻找关于如何以编程方式访问HTC Droid Incredible8GB内部存储空间的信息。

为了确定外部存储(SD卡)位置,我正在使用以下命令:

android.os.Environment.getExternalStorageDirectory().

我没有找到关于“内部电话存储”的任何对应信息。

在检查HTC/Google Nexus OneMotorola DroidHTC Dream/G1手机时(如预期的那样),似乎没有用于这种“任意内部存储”的挂载点

在这些手机上,内部存储被分成了/data/system/cache分区。

Incredible内部存储肯定不会位于/system中。/cache也不太可能,因为它是全局不可读/不可执行的。

我在评论中阅读到,手机的应用程序仍将受到512MB左右的限制,这表明它不仅仅是/data的子目录。

当然,我自己无法访问Droid Incredible设备。

3个回答

9
这里有更多信息:Droid Incredible 存储挂载点。似乎Droid Incredible将其内部存储挂载到 /emmc,据说是以读写方式挂载的。尚未确定是否需要 WRITE_EXTERNAL_STORAGE 权限才能获得读写访问权限 - 我正在从Google Code获取这些信息。
我可能会通过允许用户两个选项来存储数据来解决这个问题:
  1. SD卡
  2. Droid Incredible专用内部存储
编辑:似乎 WRITE_EXTERNAL_STORAGE 权限就足够了:根据droidForums的说法,/sdcard 和 /emmc 具有相同的 GID 为 1015。
编辑2:根据Google Group Thread的说法,Incredible 将返回 Environment.getExternalStorageDirectory() 的结果值作为 /sdcard。因此,用户需要决定他是否要使用 /sdcard 还是 /emmc。Incredible 的自动检测可能基于 /emmc 路径的存在。

你知道Incredible是唯一一个具有内置存储设备的设备吗? - Tenfour04

4
正如您所知,访问内部存储通常受权限限制,每个应用程序只能访问特定目录。这是为了防止一个应用程序读取另一个应用程序的数据,并在没有使用API的情况下访问系统文件。这是有道理的,例如,如果您有一个互联网银行应用程序,您不希望其他应用程序能够访问其任何缓存数据。
每个应用程序都可以在/data/data目录下的一个目录中存储数据。但是,通常您不会明确指定路径,而是使用像Context.openFileOutput()这样的方法,该方法将文件创建在应用程序直接的适当子目录中。
我同意您的观点,不太可能将Incredible的8GB存储空间的大部分用于/data分区。
如果他们要有一个单独的分区来方便地存储音乐和照片到手机的内部存储器中,那么他们必须以一种与现有应用程序兼容的方式来实现。这意味着使用 Environment.getExternalStorageDirectory(),但由于Incredible也支持SD卡,所以你是正确的,不清楚这可能如何工作。 Android Developers Google Group上有一个主题讨论了这个确切的问题。虽然在撰写本文时还没有答案,但有一篇帖子说三星Galaxy以以下方式解决了同样的问题:
  • 内部存储器挂载在/sdcard
  • 如果还有可用的SD卡,则可以在/sdcard/sd找到它
这似乎是一个明智的解决方案,因为它将与现有应用程序兼容,包括那些错误地硬编码了/sdcard而不是使用Environment.getExternalStorageDirectory()的应用程序。

因此,我的建议是,在寻找大存储区域(无论是SD卡还是手机内部)时,请使用Environment.getExternalStorageDirectory(),并希望每个手机都返回一些合理的东西。


-1

只需简单地使用这个:

String primary_sd = System.getenv("EXTERNAL_STORAGE");
if(primary_sd != null)
    Log.i("EXTERNAL_STORAGE", primary_sd);
String secondary_sd = System.getenv("SECONDARY_STORAGE");
if(secondary_sd != null)
    Log.i("SECONDARY_STORAGE", secondary_sd)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接