如何获取Camera文件的辅助外部目录的路径

时间:2015-08-18 12:11:51

标签: android android-camera android-5.0-lollipop

我有一个带SD卡的设备。现在我想检查设备是否已安装外部SD卡,并且可以从公共DCIM文件夹中读取文件。我知道我可以使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);,但此方法仅返回主外部存储器上的文件,而不是安装的SD卡(辅助外部存储器)。

我发现Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);为辅助外部存储器返回索引为1的元素,但此方法仅为应用程序沙箱(Android / data / packagename)获取文件。所以我的问题是如何获取公共目录的辅助外部路径的路径,如DCIM?

3 个答案:

答案 0 :(得分:2)

我找到了解决方案,这里是代码片段:

sub=sub.reset_index()

有关详情,请参阅此处:Finding the SDCard Path on Android devices

答案 1 :(得分:0)

你试过这个吗?

private boolean canWriteToFlash() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    return true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
    // Read only isn't good enough
    return false;
} else {
    return false;
} }

答案 2 :(得分:0)

要访问多个外部存储,您可以使用api

 ContextCompat.getExternalCacheDirs(Context context);
 ContextCompat.getExternalFilesDirs(Context context, String type);

这将返回/storage/sdcard1/Android/data/com.example.foo/之类的路径,然后您可以将Android/data/com.example.foo/替换为DCIM以获取所需的路径。

此方法不可靠,因为路径Android/data/com.example.foo/将来会有所不同或更改,但值得尝试。

您可以在official android documents中看到更多信息。