如何在android编程中获取外部sdcard路径



我想从存储卡播放音频文件。

如何在android编程中获取外部sdcard路径?

不幸的是,每个安卓手机型号都有不同的路径。例如:

Galaxy S3 android 4.4:内存卡存在于路径中:"/mnt/extSdCard/">

荣誉7c安卓8:内存卡存在于路径中:"/mnt/ext_sdcard/">

我在安卓9的诺基亚5和安卓6的小米Redmi 3s中找不到路径。

try {
File root = Environment.getExternalStorageDirectory();
String audioPath = root.getAbsolutePath() + "/telavatquran/naba.mp3";
FileInputStream fis = new FileInputStream(audioPath);
fd = fis.getFD();
if (fd != null) {
player.setDataSource(fd);
player.prepare();
player.start();
} else if (new File("/mnt/sdcard/external_sd/").exists()) {
seekUpdation();
player.setDataSource("/mnt/sdcard/external_sd/telavatquran/naba.mp3/");
player.prepare();
player.start();
} else if (new File("/storage/extSdCard/").exists()) {
seekUpdation();
player.setDataSource("/storage/extSdCard/telavatquran/naba.mp3/");
player.prepare();
player.start();
} else if (new File("/mnt/extSdCard/").exists()) {
seekUpdation();
player.setDataSource("/mnt/extSdCard/telavatquran/naba.mp3/");
player.prepare();
player.start();
} else if (new File("/mnt/sdcard/external_sd/").exists()) {
seekUpdation();
player.setDataSource("/mnt/sdcard/external_sd/telavatquran/naba.mp3/");
player.prepare();
player.start();
} else if (new File("storage/sdcard1/").exists()) {
seekUpdation();
player.setDataSource("storage/sdcard1/telavatquran/naba.mp3/");
player.prepare();
player.start();
} else if (new File("/mnt/ext_sdcard/").exists()) {
seekUpdation();
player.setDataSource("/mnt/ext_sdcard/telavatquran/naba.mp3/");
player.prepare();
player.start();
}
} catch (Exception e) {
}

我非常感谢你的合作。

getExternalStorageDirectory在API 29级中已弃用您必须使用以下代码:

File dir = new File(getExternalFilesDir(null) +"/telavatquran/naba.mp3");

https://developer.android.com/reference/android/os/Environment#getExternalStorageDirectory((

'this is a b4a code I used

Sub GetRootExternalSDCard() As String
Dim rp As RuntimePermissions
Dim Swriteablefolder  As List
Dim tempstr As String
Dim x As Int

Swriteablefolder=rp.GetAllSafeDirsExternal("")
'   For x=0 To Swriteablefolder.Size-1
'       Log(Swriteablefolder)
'   Next
tempstr=Swriteablefolder.Get(1)
x=tempstr.IndexOf("/Android")
Return tempstr.SubString2(0,x)
End Sub

最新更新