针叶 2016-06-16 03:07 采纳率: 0%
浏览 2978

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

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

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

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

  • 写回答

9条回答 默认 最新

  • qq_28514109 2016-06-16 03:12
    关注

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

    评论
  • yezhichonger 2016-06-16 03:14
    关注

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

    评论
  • Royal_lr 2016-06-16 05:24
    关注

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

    评论
  • AwesomeChen 2016-06-16 05:47
    关注

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

    评论
  • 月盡天明 博客专家认证 2016-06-28 07:58
    关注

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

    评论
  • gamedev˚ 2016-07-03 16:28
    关注

    权限不允许,拒绝访问

    评论
  • 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 {
                       //用户拒绝了权限,那没办法了,提示权限拒绝,无法进行操作之类的
                   }
            }
        }
    
    评论
  • 东风玖哥 2016-07-27 05:11
    关注

    你先确定这个File是否存在

    评论
  • SEU_Calvin 博客专家认证 2016-10-30 11:06
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 java连接sqlserver有问题
  • ¥15 yolov8 如何调cfg参数
  • ¥15 这个四人抢答器代码哪儿有问题?仿真程序怎么写?
  • ¥15 burpsuite密码爆破
  • ¥15 关于#ubuntu#的问题,如何解决?(相关搜索:移动硬盘)
  • ¥15 scikit安装之后import不了
  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因