尝试写入 /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

如果要在整张卡上写入,请使用存储访问框架。