簡體   English   中英

是否可以在 SAMSUNG 平板電腦/Android 11 上獲取 Android SD 卡位置

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM