Android6.0没有权限读取外部存储的问题
来源:互联网 发布:手机怎么连接电脑网络 编辑:程序博客网 时间:2024/05/22 11:51
Android6.0以上的手机都没有权限直接读取外部存储,即使在AndroidManifest.xml加上
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
也没有任何效果,最后查询国外论坛发现6.0以后很多权限都需要主动请求后才能使用,以下为解决方案:
public static boolean isGrantExternalRW(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && activity.checkSelfPermission( Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { activity.requestPermissions(new String[]{ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1); return false; } return true;}
在需要使用的地方类似如下调用即可:
view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!isGrantExternalRW(getActivity())){ return; } //授权成功后的逻辑 ... } });
上面代码只是判断了是否授权,如果授权了就执行逻辑,如果没有授权则不执行,那么如果需要监听授权是否成功,则需要重写Activity中的onRequestPermissionsResult函数,如下示例:
@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == PERMISSIONS_CODE) { for (int i = 0; i < permissions.length; i++) { String permission = permissions[i]; int grantResult = grantResults[i]; if (permission.equals(Manifest.permission.READ_EXTERNAL_STORAGE)) { if (grantResult == PackageManager.PERMISSION_GRANTED) { //授权成功后的逻辑 ... } else { requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSIONS_CODE); } } } }}
阅读全文
0 0
- Android6.0没有权限读取外部存储的问题
- Android6.0没有权限读取外部存储的问题
- Android6.0没有权限读取外部存储的问题
- android6.0以上不能读取外部存储权限问题
- 【Android】Android6.0及以上不能读取外部存储问题
- Android6.0的权限问题
- [RK3288][Android6.0] 调试笔记 --- Camera没有权限打开问题
- 【Android开发点滴】解决安卓6.0以上版本不能读取外部存储权限的问题
- Android工具之解决安卓6.0以上版本不能读取外部存储权限的问题
- android6.0权限问题
- Android6.0权限问题
- Android6.0权限问题
- android6.0权限问题
- Android6.0权限问题
- Android6.0权限问题
- android6.0权限问题
- Android6.0权限问题
- Android6.0权限问题
- Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统
- JAVA分布式快速开发基础平台 iBase4J 推荐 国产 J2EE框架
- angular 表单验证,密码双向验证
- Coursera自然语言处理 Week1 笔记
- MarkDown用法介绍
- Android6.0没有权限读取外部存储的问题
- [C++]数组初始化
- Discuz! X3.2手动升级到最新版本的方法?
- centos下Docker在线安装
- POJ 2411 Mondriaan's Dream(状压DP)
- 牛顿法与拟牛顿法学习笔记(一)牛顿法
- chmod用数字来表示权限的方法
- JDK源码分析之ArrayList(二)
- Hibernate配置文件之映射文件配置(二)