我想从存储卡播放音频文件。
如何在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