Android:外置SD卡的绝对位置

时间:2011-08-31 01:56:28

标签: android sd-card absolute-path

我有一个非常简单的问题,但到目前为止,我无法找到这个问题的答案。 “有没有办法在Android中找到INTERNAL STORAGE DIRECTORYEXTERNAL STORAGE DIRECTORY(SDCARD)的绝对路径?”

请不要建议使用Environment.getExternalStorageDirectory,因为它通常会返回内部存储路径,或Android操作系统默认选择WHATEVER存储介质。

有什么建议吗?

6 个答案:

答案 0 :(得分:5)

之前已经问过SO,请使用搜索。简而言之,“外部存储”更像是“共享存储”,它可能会或可能不会由实际的SD卡实现。某些设备有一个额外的SD卡,不用作外部存储设备。如果这是您要求的,那么目前没有用于访问其安装位置的公共API,并且它在不同设备之间有所不同。您可以查看/proc/mount以查看当前安装的内容并从那里开始。

答案 1 :(得分:2)

此链接来自Android配置指南。我认为它是推荐的,不是必需的。

https://source.android.com/devices/tech/storage/config-example.html

所以,要获得SDCARD,你可以这样做。

String storagePath = System.getenv("SECONDARY_STORAGE");

if (storagePath == null) {
    return null;
} else {
     String[] storagePathArray = storagePath.split(":");
     return storagePathArray[0];
}

EXTERNAL_STORAGE似乎出现在我自己的所有内容上。

SECONDARY_STORAGE在我的LG GTab 8.3和我的三星Tab 2& 3上定义,但不在我的Galaxy S(2.3)或我的戴尔Venue(4.3)上。在三星设备上,它似乎首先包含SD卡的多条路径,因此分割。

答案 2 :(得分:1)

你应该使用

Environment.getExternalStorageDirectory().getAbsolutePath()

答案 3 :(得分:0)

我认为/ storage / sdcard0 /用于内部sdcard,而/ storage / sdcard1 /用于外部sd卡,如果存在两个存储选项。 如果您正在检查文件是否存在于任何SD卡中,则应检查所有可能的路径。

 String path;    
 if(new File("/storage/sdcard/yourpath").exist())
     {
        path="/storage/sdcard/yourpath";
     }
 else if(new File("/storage/sdcard0/yourpath").exists())
     {
        path="/storage/sdcard0/yourpath";
     }
 else if(new File("/storage/sdcard1/yourpath").exists())
     {
        path="/storage/sdcard1/yourpath";
     }

答案 4 :(得分:0)

String path = ExternalStorageDirectoryPath +“/ foldername /”;

答案 5 :(得分:0)

在三星Galaxy Note 10.1 2014版SM-P600上(我会假设同一年份的大多数其他三星星系音符),通往" REAL"外部SD卡,是这样的:

/存储/ extSdCard /

我发现我使用了一个终端并做了:

cd / storage / extSdCard /

然后,在卡的根部,我使用了" ls"命令列出文件,所以我可以验证它上面存储的内容。多数民众赞成我如何找到我的。希望它可以帮助别人。