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

tli*_*eck 12 android

我正在尝试找到有关如何以编程方式访问HTC Droid Incredible's所谓8GB的信息的信息Internal Storage Memory.

要确定External Storage (SD Card) Location,我正在使用命令:

android.os.Environment.getExternalStorageDirectory().
Run Code Online (Sandbox Code Playgroud)

我找不到任何必然结果Internal phone Storage.

在检查HTC /谷歌Nexus One,摩托罗拉DroidHTC Dream/G1手机时,那里(正如预期的那样)似乎并不是Mount Point这样的Arbitrary Internal Storage.

在这些手机Internal Storage被分之间/data,/system/cache分区.

不可思议的Internal Storage当然不会出现在/system. /cache也不太可能,因为它是全局不可读/不可执行的.

我在评论中读到,手机仍然仅限512MB于应用程序,这表明它不仅仅是一个子目录/data.

当然,我自己无法访问某个Droid Incredible单元.

Mar*_*sny 8

这里有更多信息:Droid Incredible存储装载点.似乎Droid Incredible将其内部存储器安装到/ emmc,据推测安装了r/w.尚未验证是否WRITE_EXTERNAL_STORAGE有必要获得r/w访问权限 - 我正在尝试从Google Code获取此信息

我可能会通过允许用户存储数据的两个选项来解决这个问题:

  1. SD卡
  2. Droid Incredible-only内部存储

编辑:似乎WRITE_EXTERNAL_STORAGE权限已足够:根据droidForums,/ SD卡和/ emmc具有相同的GID 1015.

Edit2:根据Google Group Thread,Incredible返回/ sdcard作为结果值Environment.getExternalStorageDirectory().因此,用户需要决定是否要使用/ sdcard或/ emmc.Incredible的自动检测可以基于/ emmc路径的存在.


Dav*_*ebb 4

如您所知,对内部存储的访问通常按权限限于每个应用程序的某些目录。这是为了阻止一个应用程序从另一个应用程序读取数据并在不使用 API 的情况下访问系统文件。这是有道理的,因为例如,如果您有一个网上银行应用程序,您不希望其他应用程序能够访问其任何缓存的数据。

每个应用程序都将数据存储在/data/data. 但是,通常您不会显式指定路径,而是使用Context.openFileOutput()直接在应用程序的相应子目录中创建文件之类的方法。

我同意您的观点,即 Incredible 的 8GB 存储空间的大部分不太可能用于该/data分区。

因此,如果他们打算有一个单独的分区来允许音乐和照片轻松存储在手机的内部存储中,那么他们将必须以与现有应用程序兼容的方式来实现。这意味着使用Environment.getExternalStorageDirectory(),但由于 Incredible 也支持 SD 卡,所以你是对的,它是如何工作的并不明显。

Android 开发者 Google 群组上有一个帖子正在讨论这个确切的问题。虽然(在撰写本文时)还没有关于 Incredible 如何工作的答案,但有一篇文章说三星 Galaxy 通过这种方式解决了同样的问题:

  • 内部存储安装在/sdcard
  • 如果还有 SD 卡可用,可以在以下位置找到:/sdcard/sd

这似乎是一个明智的解决方案,因为它将与现有应用程序兼容,包括那些错误地硬编码/sdcard而不是使用Environment.getExternalStorageDirectory().

因此,我的建议是,Environment.getExternalStorageDirectory()当您正在寻找大面积存储空间(无论是 SD 卡还是手机内部)并希望每部手机都返回一些合理的内容时,请使用该存储空间。