繁体   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