【Android开发点滴】解决安卓6.0以上版本不能读取外部存储权限的问题
来源:互联网 发布:智慧的云计算 pdf 编辑:程序博客网 时间:2024/05/22 17:05
我们都知道当应用程序需要读取手机内部数据例如图片,或者存储数据到手机上例如保存用加密的登陆密码等等,这些操作需要在AndroidManifest.xml中注册以下权限:
<!--读写磁盘的权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
确实如此,可是这样并不能解决上面的问题。在Android 6.0及以上的系统中以上方法是行不通的,那么我们又该怎么做才能获取这些权限呢?
首先还是要在AndroidManifest.xml注册以上两条权限,此外定义一个这样的类叫PermissionUtils:
package com.kaipingzhou.signer.utils;import android.Manifest;import android.app.Activity;import android.content.pm.PackageManager;import android.os.Build;/** * Created by 周开平 on 2017/4/2 22:43. * qq 275557625@qq.com * 作用:解决Android 6.0以上系统的权限问题 */public class PermissionUtils { private static String[] PERMISSIONS_CAMERA_AND_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; /** * 解决安卓6.0以上版本不能读取外部存储权限的问题 * * @param activity * @param requestCode * @return */ public static boolean isGrantExternalRW(Activity activity, int requestCode) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int storagePermission = activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); int cameraPermission = activity.checkSelfPermission(Manifest.permission.CAMERA); if (storagePermission != PackageManager.PERMISSION_GRANTED || cameraPermission != PackageManager.PERMISSION_GRANTED) { activity.requestPermissions(PERMISSIONS_CAMERA_AND_STORAGE, requestCode); return false; } } return true; }}
接下来,也是最重要的一步,调用上面的代码,下面我给出一个例子,其他都类似。
if (PermissionUtils.isGrantExternalRW(LoginActivity.this, 1)) { //登陆 Login(loginId, loginPsd);}
注意:这样还不够,还需要重写onRequestPermissionsResult()方法:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case 1: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { Login(loginId, loginPsd); } else { runOnUiThread(new Runnable() { @Override public void run() { ToastUtil.showToast(getApplicationContext(), "您的手机暂不适配哦~"); } }); } break; } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }
这样就完美地解决了Android 6.0及以上版本不能读取外部存储权限的问题。
阅读全文
1 0
- 【Android开发点滴】解决安卓6.0以上版本不能读取外部存储权限的问题
- Android工具之解决安卓6.0以上版本不能读取外部存储权限的问题
- android6.0以上不能读取外部存储权限问题
- 【Android】Android6.0及以上不能读取外部存储问题
- Android 6.0及以上版本定位权限开发问题
- 安卓6.0以上动态权限问题
- 解决Android 6.0以上的相机权限适配问题
- 解决设置Android 23.0以上版本对SD卡的读写权限无效的问题
- Jitsi-android 不支持安卓6.0以上版本的解决办法
- 安卓6.0权限的点滴记录
- Android6.0没有权限读取外部存储的问题
- Android6.0没有权限读取外部存储的问题
- Android6.0没有权限读取外部存储的问题
- 解决Android拍照6.0以上动态获取权限问题
- Android 6.0 以上权限问题
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Android 6.0及以上版本的运行时权限介绍
- Ubuntu中虚拟环境pip安装包超时问题
- jvm内存模型
- CVE-2010-2883
- IntentService源码分析
- MySQL索引结构类型划分
- 【Android开发点滴】解决安卓6.0以上版本不能读取外部存储权限的问题
- 基于iOS的网络音视频实时传输系统(一)- 前言
- Android UI绘制
- hadoop笔记本
- CentOS7 Hbase-1.3.1 分布式部署
- Oracle dblink 同义词 表赋权
- 王者荣耀英雄分析--孙悟空
- Leetcode c语言-Search in Rotated Sorted Array
- 初次OJ网体验