尝试写入 /storages 时访问被拒绝
Access denied when try to write in /storages
我遇到了问题。在 Android 4.0 上运行良好,但在 6.0 上则不然。我当然知道 READ/WRITE 权限并在运行时执行。
来自 android 开发人员文档的 isExternalStorageWritable() 方法 returns true.
路径:/storage/98C3-CED0/iptv_records/...
异常:
java.io.FileNotFoundException: /storage/98C3-CED0/iptv_records/.company-pvr-meta-info: open failed: EACCES (Permission denied)
String[] permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
PermissionsManager.verifyStoragePermissions(this, permissions);
public static void verifyStoragePermissions(Activity activity, String[] PERMISSIONS_STORAGE) {
if (!isPermissionsGrantred(activity, PERMISSIONS_STORAGE)) {
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
}
private static boolean isPermissionsGrantred(Context context, String[] PERMISSIONS_STORAGE) {
for (String permission : PERMISSIONS_STORAGE) {
int granted = ActivityCompat.checkSelfPermission(context, permission);
if (granted != PackageManager.PERMISSION_GRANTED) return false;
}
return true;
}
我做了什么才能让它按预期工作。谢谢!
您不能使用 File 和 FileOutputStream class 在如今 Android 的可移动微型 SD 卡上写入。
仅在特定于应用程序的目录中,在您的情况下为
/storage/98C3-CED0/Android/data/<packagename>/files
如果要在整张卡上写入,请使用存储访问框架。
我遇到了问题。在 Android 4.0 上运行良好,但在 6.0 上则不然。我当然知道 READ/WRITE 权限并在运行时执行。 来自 android 开发人员文档的 isExternalStorageWritable() 方法 returns true.
路径:/storage/98C3-CED0/iptv_records/...
异常:
java.io.FileNotFoundException: /storage/98C3-CED0/iptv_records/.company-pvr-meta-info: open failed: EACCES (Permission denied)
String[] permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
PermissionsManager.verifyStoragePermissions(this, permissions);
public static void verifyStoragePermissions(Activity activity, String[] PERMISSIONS_STORAGE) {
if (!isPermissionsGrantred(activity, PERMISSIONS_STORAGE)) {
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
}
private static boolean isPermissionsGrantred(Context context, String[] PERMISSIONS_STORAGE) {
for (String permission : PERMISSIONS_STORAGE) {
int granted = ActivityCompat.checkSelfPermission(context, permission);
if (granted != PackageManager.PERMISSION_GRANTED) return false;
}
return true;
}
我做了什么才能让它按预期工作。谢谢!
您不能使用 File 和 FileOutputStream class 在如今 Android 的可移动微型 SD 卡上写入。
仅在特定于应用程序的目录中,在您的情况下为
/storage/98C3-CED0/Android/data/<packagename>/files
如果要在整张卡上写入,请使用存储访问框架。