ysy950803
针叶
采纳率0%
2016-06-16 03:07 阅读 2.7k

安卓开发,new File()后提示open failed...Permission denied.

我主要是要提取一个txt文本里的内容,先从文件管理器获取到了Uri,这些都没问题,然后提取到绝对路径后,将pathStr传入new File(),结果实际运行时也不会崩溃,就是后台提示权限问题,文本也没有正常提取到内容。

以上问题全部出现在Android6.0,我另一个手机是4.4,同样的方法和代码,就没问题。

请问大神们这个咋解决?我查了好多资料都没搞定。图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

9条回答 默认 最新

  • yezhichonger yezhichonger 2016-06-16 03:14

    android 从6.0对用户权限的获取方式进行了修改,不像以前那样只在AndroidManifest.xml单单的添加权限就可以的,有些敏感的权限还需要在runtime询问用户是不是赋予此APP所需要的权限,如果没有对这些敏感的权限在runtime进行处理的话android默认是会禁止当前权限。如果检测没有开启权限就要 调用ActivityCompat.requestPermissions提示用户授权

    点赞 1 评论 复制链接分享
  • u010430128 AwesomeChen 2016-06-16 05:47

    Android 6.0用户权限获取问题,具体可参考:http://www.cnblogs.com/zqlxtt/p/4873831.html

    点赞 1 评论 复制链接分享
  • qq_28514109 qq_28514109 2016-06-16 03:12

    除了权限 还要判断 版本号 api 19以下 和19以上 要在 sd卡 的 data/data/包名/cache下写 文件 6.0的就不能在sd卡写东西 还有手机厂商 要是公司的应用你就多判断一下

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 2016-06-16 05:24

    应该是权限的问题吧,,,

    点赞 评论 复制链接分享
  • crazy1235 月盡天明 2016-06-28 07:58

    6.0之后添加权限判断。如果没有获取的话,需要动态获取权限。。。。。

    点赞 评论 复制链接分享
  • Coder__CS gamedev˚ 2016-07-03 16:28

    权限不允许,拒绝访问

    点赞 评论 复制链接分享
  • chen_zhang_yu chen_zhang_yu 2016-07-06 09:55

    针对6.0系统,判断运行时权限:
    在new File()之前先判断权限是否运行

     if (!checkWritePermission()) {     //检查有无写文件权限
                            // 申请WRITE_EXTERNAL_STORAGE权限
                            ActivityCompat.requestPermissions(ACT_AboutUs.this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, requestCode);
                        }else{
                            //有权限处理你的逻辑
                        }
    
                        public boolean checkWritePermission() {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                return false;
            } else
                return true;
        }
    
    
                    然后重写这个方法,处理用户拒绝或允许权限的情况
    
                        @Override
        public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
            if (requestCode == this.requestCode) {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    //用户允许权限,做逻辑
    
                   } else {
                       //用户拒绝了权限,那没办法了,提示权限拒绝,无法进行操作之类的
                   }
            }
        }
    
    点赞 评论 复制链接分享
  • dongfeng9ge 东风玖哥 2016-07-27 05:11

    你先确定这个File是否存在

    点赞 评论 复制链接分享
  • SEU_Calvin SEU_Calvin 2016-10-30 11:06

    不是File是否存在的问题,是6.9新加的权限管理机制,可以参考
    http://blog.csdn.net/seu_calvin/article/details/52163456

    点赞 评论 复制链接分享

相关推荐