Android程序报错:Anroid 6.0 权限问题java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)

Posted 可乐淘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android程序报错:Anroid 6.0 权限问题java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)相关的知识,希望对你有一定的参考价值。

异常

java.io.FileNotFoundException: /storage/emulated/0/Video/ekwing_main_paren.apk(你的文件路径): open failed: EACCES (Permission denied)

原因

android 6.0 中,有些权限属于 Protected Permission,这类权限只在 AndroidManifest.xml中声明是无法真正获取到的,还需要再代码中动态获取,使权限许可弹出对话框,用户点击“允许”后,方可真正获得此权限。

解决方法一

在代码中添加以下代码,如下

/**
         * 动态获取权限,Android 6.0 新特性,一些保护权限,除了要在AndroidManifest中声明权限,还要使用如下代码动态获取
         */
        if (Build.VERSION.SDK_INT >= 23) 
            int REQUEST_CODE_CONTACT = 101;
            String[] permissions = Manifest.permission.WRITE_EXTERNAL_STORAGE;
            //验证是否许可权限
            for (String str : permissions) 
                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) 
                    //申请权限
                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                    return;
                
            
        

解决方法二

如果不写以上代码,还可以用另外一种简单简单粗暴的方式:直接在6.0的设置里面找到应用,选中你的APP->权限->打开存储空间权限

以上是关于Android程序报错:Anroid 6.0 权限问题java.io.FileNotFoundException: ……:open failed: EACCES (Permission denied)的主要内容,如果未能解决你的问题,请参考以下文章

使用android studio运行应用程序时如何启用android 6.0中的所有权限

Android 6.0“gps”位置提供程序需要 ACCESS_FINE_LOCATION 权限

Android 6.0: 动态权限管理的解决方案

在Android 6.0 设备上动态获取权限

如何调试/重置 Android 6.0 权限?

在 Android > 6.0 中,第二次从图库中访问图像时出现安全权限异常