Android 6.0 权限管理
2024-10-18 23:33:54
google官方例子: https://github.com/googlesamples/android-RuntimePermissions
Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,又新增了运行时权限动态检测。
以下权限都需要在运行时判断:
身体传感器,日历,摄像头,通讯录,地理位置,麦克风,电话,短信,存储空间
运行时权限处理
Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限,所以如果你以前的APP设置的targetSdkVersion低于23,在运行时也不会崩溃,但这也只是一个临时的救急策略,用户还是可以在设置中取消授予的权限。
检查并申请权限
我们需要在用到权限的地方,每次都检查是否APP已经拥有权限,比如我们有一个下载功能,需要写SD卡的权限,我们在写入之前检查是否有WRITE_EXTERNAL_STORAGE权限,没有则申请权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//申请WRITE_EXTERNAL_STORAGE权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
}
请求权限后,系统会弹出请求权限的Dialog
用户选择允许或需要后,会回调onRequestPermissionsResult方法, 该方法类似于onActivityResult
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
doNext(requestCode,grantResults);
}
我们接着需要根据requestCode和grantResults(授权结果)做相应的后续处理
private void doNext(int requestCode, int[] grantResults) {
if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
} else {
// Permission Denied
}
}
}
最新文章
- 我为NET狂官方群福利贴:一些常用的工具:2016-08-01更新
- ExecutorService与ThreadPoolTaskExecutor
- apache开启.htaccess及.htaccess的使用方法(转)
- C语言中qsort函数的应用
- ZeroClipboard / jquery.zclip.min.js跨浏览器复制插件使用中遇到的问题解决
- [转]15年双11手淘前端技术巡演 - H5性能最佳实践
- 在sqlServer中把数据导出为insert脚本
- Mobile Web
- ajax该什么时候用
- 转:Python requests 快速入门
- 暑假集训(1)第二弹 -----Catch the cow(Poj3278)
- vijosP1059 积木城堡
- WinForm中TextBox 中判断扫描枪输入与键盘输入
- 【转载】__name__ == ";__main__";: 你认识我么?
- bootstrap快速入门笔记(一)
- Assigning Workstations
- suds库使用说明官方文档
- 与webview打交道踩过的坑
- 利用SHAPEIT将vcf文件进行基因型(genotype)定相(phasing):查看两个突变是否来源于同一条链(染色体或父本或母本),two mutations carried by the same read
- grid - 显式网格
热门文章
- 20145223 《Java程序程序设计》实验报告4
- js-Ajax与Comet
- 泛型容器单元(Generics.Collections)[3]: TStack<;T>; 堆栈列表
- Silverlight
- linux查看和修改当前系统时间
- oracle 函数大全及运算符
- 《深入浅出Windows Phone 8.1 应用开发》基于Runtime框架全新升级版
- 【POJ】2151 Check the difficulty of problems
- ArcGIS几种数据格式
- 用GruntJS合并、压缩CSS资源文件