Android 6.0文件写入权限被拒绝

时间:2015-11-15 11:31:11

标签: java android manifest

我正在运行一个用于在Android 5.1上运行的旧代码。现在它不适用于N:N上的跟随错误。

任何输入??

  1. SDK版本:23
  2. 清单中提供的所有权限。
  3. 代码:

    FileOutputStream ( EACCES (Permission denied) )

2 个答案:

答案 0 :(得分:10)

好的,我得到了解决方案。有两个。

  1. 黑客:
    • 只需将目标API从23减少到22即可。
  2. 另一个是更好的解决方案: 在Android 6中,您需要检查代码中的权限以及写入先前完成的清单。 执行以下操作:

    • 在清单中为READ和WRITE添加权限。代码:

       private static final int REQUEST_EXTERNAL_STORAGE = 1;
       private static String[] PERMISSIONS_STORAGE = {
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE
       };
      
      
       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
                 );
            }
       }
      

答案 1 :(得分:1)

用户授予存储权限后,您应该在onRequestPermissionsResult()中启动该帖子。

有关详情,请查看http://developer.android.com/training/permissions/requesting.html