每次尝试读取SD卡(可移动存储)的信息时,我都会遇到android.system.ErrnoException:statvfs失败:EACCES(权限被拒绝)
我在清单文件中添加了权限:
<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
);
}
}
创建活动时会调用上面的方法(它显示弹出窗口,并且我允许访问)
但是当我尝试访问设备时:(Path = / 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)
您有任何想法吗,如何允许访问可移动设备?
谢谢 !
最佳答案
SD卡(外部存储)
Removable storage不是external storage。
我在清单文件中添加了权限
这些权限与可移动存储无关。
我得到这个错误
您没有直接文件系统访问可移动存储上任意位置的权限。
您是否有任何想法,请问如何允许访问外部SD卡?
要么:
在Android 4.4+上,在Android 4.4+上使用getExternalFilesDirs()
,getExternalCacheDirs()
和/或getExternalMediaDirs()
(请注意方法名称的复数形式)访问可移动存储上应用程序唯一的目录。您不需要任何权限即可使用这些目录。
在Android 4.4+上,停止考虑可移动存储,并使用the Storage Access Framework。这使用户可以指定内容所在的位置,该内容可以位于外部存储,可移动存储,Google云端硬盘等上。
在Android 7.0+上,使用StorageManager
及其StorageVolume
API。