10

我想下载一些文件并将它们保存到手机/标签的内部存储中。在三星 Galaxy Note 2 和 Galaxt Tab 10.1 上试用。当我/storage/sdcard0/在它们上使用时,代码运行成功,但是当我使用Galaxy Nexus 3代码时失败。

我想获取 phoe 或 tab 的内部存储的绝对路径Absolute Path

有可能吗,如果有怎么办?

4

3 回答 3

31

当我在它们上使用 /storage/sdcard0/ 时,代码运行成功,但是当我使用 Galaxy Nexus 3 时,代码失败。

/storage/sdcard0/不是内部存储。它是外部存储。

(顺便说一句,由于没有名为“Galaxy Nexus 3”的设备,我假设您只是指“Galaxy Nexus”)

要为您的应用程序在内部存储上查找位置,请使用getFilesDir(), 调用任何Context(例如您的Activity, 以获取File对象。

要获取应用程序唯一的外部getExternalFilesDir()存储位置,请使用, 调用任何Context(例如您的Activity, 以获取File对象。

要在外部存储上为常见类型的文件(例如电影)获取标准位置,请使用.getExternalStoragePublicDirectory()Environment

要获取外部存储的根目录,请使用on 。然而,现在这被认为是草率的编程,因为它鼓励开发人员将文件放在随机位置。getExternalStorageDirectory()Environment

于 2013-07-09T11:16:32.683 回答
10

为什么不能Environment.getExternalStorageDirectory()用于从代码中获取/storage/sdcard0/路径?

还需要添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-07-09T11:15:07.417 回答
1

找到的解决方案是第一次编辑模拟器:

  1. 转到 Android 虚拟设备管理器,然后编辑模拟器
  2. 为受人尊敬的模拟器设置 100 MB 的 SD d 卡,说好的
  3. 保存并关闭模拟器并启动

它对我有用,该应用程序不再出错并且工作正常。

于 2014-03-16T08:20:32.693 回答