[英]Is it possible to get Android SD card location on SAMSUNG Tablet / Android 11
我查看了很多很多关于获取 SD 卡位置的帖子,其中大多数提到使用Environment.getExternalStorageState()
, Environment.getExternalStorageDirectory()
总是为我在三星 Galaxy Tab A / Android 11 ( /storage/emulated/0
)
我确实看到一条评论说使用System.getenv("SECONDARY_STORAGE")
,它返回/storage/sdcard:/storage/usb1:/storage/usb2
,但试图打开一个文件(我放在那里)只返回一个not found
错误(即java.io.FileNotFoundException: /sdcard/external_sd/Music/test/testfile.mp3: open failed: ENOENT (No such file or directory)
。
还尝试Environment.getExternalStoragePublicDirectory(Environment.MEDIA_MOUNTED).getPath()
并且返回/storage/emulated/0/mounted
并且这也不起作用
我有以下权限..
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.PERMISSIONS_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_EXTERNAL_STORAGE" />
在启动时我打电话
private fun verifyStoragePermissions(activity: Activity) {
// Check if we have write permission
val permission =
ActivityCompat.checkSelfPermission(activity, READ_EXTERNAL_STORAGE)
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
arrayOf(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE),
)
}
}
最后,如此处所述,我硬连线/sdcard/external_sd
但这也不起作用(即我尝试打开一个我知道在那里的文件,并使用以下内容列出内容..
File(testFolder).walk().forEach {
println(it)
}
我有其他应用程序写入它,所以必须有办法做到这一点(我只想读取现有文件)。
有没有人有任何其他建议,我知道我可能做错了什么?
你可以试试这个:
File[] dirs = getExternalFilesDirs("");
for (File currD :
dirs) {
if (currD.getAbsolutePath().equals(getExternalFilesDir("").getAbsolutePath())) {
// Here is internal storage path
} else {
// Here is SD path
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.