【问题标题】:Android Environment getExternalStorageDirectory method return unhuman-readable pathAndroid 环境 getExternalStorageDirectory 方法返回不可读的路径
【发布时间】:2016-10-18 14:25:36
【问题描述】:

我的设备是华为NEM-TL100H,运行Android 6.0。当我使用流动代码获取sdcard路径时:

File sdcard = Environment.getExternalStorageDirectory();

但它会返回

/storage/E635-0F94/

我确定我的项目中有读写外部存储权限的请求,并且目标sdk版本是22。

有人遇到同样的问题吗?

我期望它会返回 /storage/emulated/legacy/ 或 /storage/emulated/0/ 这样的路径,但不会返回 /storage/E635-0F94/

事实上,在我 adb shell 进入设备后, ls /storage 文件夹中列出了 4 个子文件夹:E635-0F94、emulated、sdcard0、sdcard1。 E635-0F94 是 sdcard0 还是 sdcard1 的另一个链接?

【问题讨论】:

  • 您的问题到底是什么?它叫getExternalStorageDirectory 而不是getExternalStorageDirectoryHumanReadableName。
  • “当我获得 sdcard 路径时”——该代码与大多数 Android 设备上的 SD 卡无关。 External storage 不是 removable storage。
  • /storage/E635-0F94/ 这是微型 SD 卡的完美路径。只是它是由该函数返回用于外部存储的。
  • @greenapps 在我看来,它会返回类似 /storage/emulated/legacy/ 或 /storage/emulated/0/ 的路径,但不会返回 /storage/E635-0F94 。

标签: android


【解决方案1】:

获取所有数据:

ArrayList<String> filesList = new ArrayList<String>();   
String sd_card = Environment.getExternalStorageDirectory().toString();
file = new File( sd_card ) ;       
File list[] = file.listFiles();
for( int i=0; i< list.length; i++) {
    filesList.add( list[i].getName() );
}

不要忘记在清单中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

【讨论】:

  • 未询问获取文件列表的问题。他还特别提到他已给予所有必要的许可
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2011-08-25
相关资源
最近更新 更多