我的手机的SD卡路径名为" / storage / external_SD"
但我听到不同的手机制造商以不同方式命名他们的路径。像SD_card,externalMemory等..
我正在开发一个应用程序,在打开文件追踪器时打开SD卡内容。
当不同品牌以不同方式命名其SD卡路径时,如何设置开启路径?
答案 0 :(得分:1)
getExternalStorageDirectory ()
将为您提供(通常)SD卡的路径,因此您可以在代码中使用此功能。
答案 1 :(得分:1)
您正在寻找Environment
类及其静态方法getExternalStorageDirectory
。
返回主外部存储目录 ...
获得
在具有多个"外部"的设备中存储目录,这个目录代表了 "主"用户将与之交互的外部存储。进入 二级存储可通过
答案 2 :(得分:1)
是。不同厂商使用不同的SD卡名称,如三星Tab 3中的extsd,以及其他三星设备使用sdcard这样不同的厂商使用不同的名称。
我和你有同样的要求。所以我已经从我的项目中为您创建了一个示例示例,转到此链接Android Directory chooser example,它使用了androi-dirchooser库。 此示例检测SD卡并列出所有子文件夹,它还检测设备是否有多于一张SD卡。
部分代码如下所示。完整示例转到链接 Android Directory Chooser
帮助方法
/**
* Returns the path to internal storage ex:- /storage/emulated/0
*
* @return
*/
private String getInternalDirectoryPath() {
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
/**
* Returns the SDcard storage path for samsung ex:- /storage/extSdCard
*
* @return
*/
private String getSDcardDirectoryPath() {
return System.getenv("SECONDARY_STORAGE");
}
mSdcardLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
String sdCardPath;
/***
* Null check because user may click on already selected buton before selecting the folder
* And mSelectedDir may contain some wrong path like when user confirm dialog and swith back again
*/
if (mSelectedDir != null && !mSelectedDir.getAbsolutePath().contains(System.getenv("SECONDARY_STORAGE"))) {
mCurrentInternalPath = mSelectedDir.getAbsolutePath();
} else {
mCurrentInternalPath = getInternalDirectoryPath();
}
if (mCurrentSDcardPath != null) {
sdCardPath = mCurrentSDcardPath;
} else {
sdCardPath = getSDcardDirectoryPath();
}
//When there is only one SDcard
if (sdCardPath != null) {
if (!sdCardPath.contains(":")) {
updateButtonColor(STORAGE_EXTERNAL);
File dir = new File(sdCardPath);
changeDirectory(dir);
} else if (sdCardPath.contains(":")) {
//Multiple Sdcards show root folder and remove the Internal storage from that.
updateButtonColor(STORAGE_EXTERNAL);
File dir = new File("/storage");
changeDirectory(dir);
}
} else {
//In some unknown scenario at least we can list the root folder
updateButtonColor(STORAGE_EXTERNAL);
File dir = new File("/storage");
changeDirectory(dir);
}
}
});