我的Android手机是Sony Z3,当我使用时,版本是Android 6.0.1
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
获取SDCard DCIM路径,返回路径为/storage/emulated/0/DCIM
,
但是我的SD卡真实路径是/storage/3FC5-160A/DCIM
。任何人都知道如何在Android 6上获得正确的SD卡路径?感谢。
另外,我在清单
中添加了外部存储读写权限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
答案 0 :(得分:2)
我必须专门针对M.执行此操作。使用context.getExternalCacheDirs()
获取所有目录,然后检查它是否可以移除
// For Marshmallow, use getExternalCacheDirs() instead of System.getenv("SECONDARY_STORAGE")
// to determine if there are mounted SD cards
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
File[] externalCacheDirs = context.getExternalCacheDirs();
for (File file : externalCacheDirs) {
if (Environment.isExternalStorageRemovable(file)) {
// Path is in format /storage.../Android....
// Get everything before /Android
externalSdCardPath = file.getPath().split("/Android")[0];
break;
}
}
答案 1 :(得分:1)
经过大量研究后,我找到了解决方案。下面的代码为您提供&#34; SD卡/ Android /数据/您的应用位置&#34; 中的路径,然后您就可以随心所欲。
getApplicationContext().getExternalCacheDirs()[1]
答案 2 :(得分:0)
使用getExternalStorageDirectory()
代替getExternalStoragePublicDirectory()
,如下所示
Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/";
或首先检查路径
final String path = android.os.Environment.DIRECTORY_DCIM;
答案 3 :(得分:0)
我正在使用访问存储框架。我通过处理uri字符串得到它并得到“3FC5-160A”部分然后将它组合到sdcard路径。
你可以在这里查看我的详细答案