android打开文件报错open failed:EACCES(permission denied)。避免以后踩坑。

刚开始碰到这样的问题按照惯例无非就是首先在manifests文件中添加权限



 

因为android 6.0后应用不能这样设置权限,需要在代码中动态设置添加,于是

在代码中动态获取权限,添加如下代码

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);
      }
   }

按理说这样子已经获得了权限了,但是但是还不行,难道是我动态获取的权限不对,于是在这个地方反复修改代码,最后还是不行,蒙圈~。

最后发现!!!

还需要在manifest文件中的application地方添加:

android:requestLegacyExternalStorage="true"

终于搞定。

仔细分析这句代码发现原来android版本比较高(比如android 10)时必须要添加这句。

你可能感兴趣的:(笔记,android,java)