0

每次我嘗試讀取SD卡(可移動存儲)的信息,我得到android.system.ErrnoException:statvfs失敗:EACCES(拒絕)讀/寫可移動SD卡(Android模擬器)

我在清單文件添加權限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

作爲的minSdkVersion> 23

public static void verifyStoragePermissions(Activity activity) { 
    // Check if we have write permission 
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); 

    if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 
     ActivityCompat.requestPermissions(
       activity, 
       PERMISSIONS_STORAGE, 
       REQUEST_EXTERNAL_STORAGE 
     ); 
    } 
} 

的方法,當活動是創建上面被稱爲(它示出了在彈出我允許接入)

但是,當我嘗試訪問該設備:(路徑=到/ mnt/media_rw/13F4-1C18)

StatFs stat = new StatFs(path); 

我得到這個錯誤:

java.lang.IllegalArgumentException: Invalid path: /mnt/media_rw/13F4-1C18 
                  at android.os.StatFs.doStat(StatFs.java:46) 
                  at android.os.StatFs.<init>(StatFs.java:39) 
..... 
Caused by: android.system.ErrnoException: statvfs failed: EACCES (Permission denied) 
                  at libcore.io.Posix.statvfs(Native Method) 
                  at libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:304) 
                  at android.system.Os.statvfs(Os.java:506) 
                  at android.os.StatFs.doStat(StatFs.java:44) 
                  at android.os.StatFs.<init>(StatFs.java:39)  

你有什麼想法,請如何允許訪問可移動設備?

謝謝!

+0

你想讀什麼樣的信息?這看起來不像是SD卡的路徑。 – greenapps

+0

設備的尺寸(總數,可用尺寸) – Mohamed

+0

你想寫什麼? – greenapps

回答

2

SD卡(外部存儲裝置)

Removable storageexternal storage

我添加的權限清單文件

這些權限都無關,與移動存儲。

我得到這個錯誤

您不必對移動存儲的任意位置直接訪問文件系統。

你有什麼想法,請問如何允許訪問外部SD卡?

或者:

  • 在Android 4.4或以上版本,使用getExternalFilesDirs()getExternalCacheDirs(),和/或getExternalMediaDirs()(注意方法名的複數形式)在Android 4.4或以上版本,訪問獨特的目錄爲您在可移動存儲上的應用您不需要任何權限來處理這些目錄。

  • 在Android 4.4+上,不要再考慮移動存儲和使用the Storage Access Framework。這允許用戶指定內容所在,這可能是在外部存儲設備,移動存儲,谷歌驅動器等

  • 在Android 7.0及以上版本,使用StorageManager及其StorageVolume的API。