[英]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.