我有一个非常简单的问题,但到目前为止,我无法找到这个问题的答案。 “有没有办法在Android中找到INTERNAL STORAGE DIRECTORY
和EXTERNAL STORAGE DIRECTORY(SDCARD)
的绝对路径?”
请不要建议使用Environment.getExternalStorageDirectory
,因为它通常会返回内部存储路径,或Android操作系统默认选择WHATEVER存储介质。
有什么建议吗?
答案 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"命令列出文件,所以我可以验证它上面存储的内容。多数民众赞成我如何找到我的。希望它可以帮助别人。