我主要是要提取一个txt文本里的内容,先从文件管理器获取到了Uri,这些都没问题,然后提取到绝对路径后,将pathStr传入new File(),结果实际运行时也不会崩溃,就是后台提示权限问题,文本也没有正常提取到内容。
以上问题全部出现在Android6.0,我另一个手机是4.4,同样的方法和代码,就没问题。
请问大神们这个咋解决?我查了好多资料都没搞定。
我主要是要提取一个txt文本里的内容,先从文件管理器获取到了Uri,这些都没问题,然后提取到绝对路径后,将pathStr传入new File(),结果实际运行时也不会崩溃,就是后台提示权限问题,文本也没有正常提取到内容。
以上问题全部出现在Android6.0,我另一个手机是4.4,同样的方法和代码,就没问题。
请问大神们这个咋解决?我查了好多资料都没搞定。
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
除了权限 还要判断 版本号 api 19以下 和19以上 要在 sd卡 的 data/data/包名/cache下写 文件 6.0的就不能在sd卡写东西 还有手机厂商 要是公司的应用你就多判断一下
android 从6.0对用户权限的获取方式进行了修改,不像以前那样只在AndroidManifest.xml单单的添加权限就可以的,有些敏感的权限还需要在runtime询问用户是不是赋予此APP所需要的权限,如果没有对这些敏感的权限在runtime进行处理的话android默认是会禁止当前权限。如果检测没有开启权限就要 调用ActivityCompat.requestPermissions提示用户授权
应该是权限的问题吧,,,
Android 6.0用户权限获取问题,具体可参考:http://www.cnblogs.com/zqlxtt/p/4873831.html
6.0之后添加权限判断。如果没有获取的话,需要动态获取权限。。。。。
权限不允许,拒绝访问
针对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 {
//用户拒绝了权限,那没办法了,提示权限拒绝,无法进行操作之类的
}
}
}
你先确定这个File是否存在
不是File是否存在的问题,是6.9新加的权限管理机制,可以参考
http://blog.csdn.net/seu_calvin/article/details/52163456
报告相同问题?