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。