Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';无法在Android 6.0上获取SD卡的真实路径_Android_Android Sdcard - Fatal编程技术网

Can';无法在Android 6.0上获取SD卡的真实路径

Can';无法在Android 6.0上获取SD卡的真实路径,android,android-sdcard,Android,Android Sdcard,我的安卓手机是索尼Z3,当我使用安卓6.0.1时,它的版本是安卓6.0.1 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM)获取SD卡DCIM路径,返回路径为/storage/emulated/0/DCIM 但我的SD卡实际路径是/storage/3FC5-160A/DCIM。有人知道如何在Android 6上获得正确的SD卡路径吗?谢谢 另外,我在清单中添加了外部存储读写权限 <uses

我的安卓手机是索尼Z3,当我使用安卓6.0.1时,它的版本是安卓6.0.1
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY\u DCIM)
获取SD卡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" />

使用
getExternalStorageDirectory()
而不是像下面这样使用
getExternalStoragePublicDirectory()

Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/";
或者先检查路径

final String path = android.os.Environment.DIRECTORY_DCIM;

我正在使用access存储框架。我通过处理uri字符串得到它,得到“3FC5-160A”部分,然后将其组合到SD卡路径

你可以在这里查看我的详细答案


我必须专门为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;
         }
}

经过大量研究,我找到了一个解决办法。下面的代码为您提供了“SD卡/Android/data/your app location”中的路径,然后您可以做任何您想做的事情

getApplicationContext().getExternalCacheDirs()[1]

感谢您的回复,但它仍然返回模拟路径。谢谢,我使用了与您相同的方法,context.getExternalMediaDirs()也可以获得真正的SD卡路径。