【发布时间】:2022-08-14 04:16:32
【问题描述】:
我查看了许多关于获取 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),
)
}
}
最后,如here 所述,我硬连线/sdcard/external_sd 但这也不起作用(即我尝试打开一个我知道在那里的文件,并使用以下内容列出内容..
File(testFolder).walk().forEach {
println(it)
}
我有其他应用程序写入它,所以必须有某种方法(我只想读取现有文件)。
我可能做错了什么?
-
\"I have the following permissions\" -- 后两个不是实际权限。