千家信息网

Android 6.0中怎么动态申请权限

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Android 6.0中怎么动态申请权限,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。系统权限分为2种:Normal permiss
千家信息网最后更新 2025年12月03日Android 6.0中怎么动态申请权限

Android 6.0中怎么动态申请权限,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

系统权限分为2种:

  • Normal permission:对于用户隐私没有危险的,在清单文件中申请就可以直接授权。

  • Dangerous permission:app需要访问用户的隐私信息等,即使在清单文件注册,也需要在运行是通过用户授权。

Dangerous permission需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整组权限都可以使用了。


group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS

group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS
permission:com.android.voicemail.permission.ADD_VOICEMAIL

group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR

group:android.permission-group.CAMERA
permission:android.permission.CAMERA

group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS

group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION

group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE

group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO

group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS


申请权限核心代码

/**
* android 6.0 以上需要动态申请权限
*/
private void initPermission() {
//定义动态申请的权限组
String permissions[] = {Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.INTERNET,
Manifest.permission.READ_PHONE_STATE };

ArrayList toApplyList = new ArrayList();

//遍历要申请的权限组里的每个权限是否已经获取到权限了
//如果未获取到权限加入到toApplyList列表里用于动态申请
for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
toApplyList.add(perm);
// 进入到这里代表没有权限.
}
}
//判断是否有需要动态申请的权限用requestPermissions进行申请
if (toApplyList.size() > 0) {
String tmpList[] = new String[toApplyList.size()];
if (!toApplyList.isEmpty()) {
ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
}
} else {
//如果没有需要动态申请的权限直接进入我们要做的事件
InitVoice();
}
}

同时要在activity里面重写一下onRequestPermissionsResult方法,用于获取到后权限的动作.

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// 此处为android 6.0以上动态授权的回调,用户自行实现。
for (String perm : permissions) {
//得到申请权限的返回结果,如果未获取到权限直接关闭当前activity
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
finish();
}
}
//申请到权限后执行我们要做的事件
InitVoice();
}

在activity的onCreate事件加入权限申请的调用

try {
final PackageInfo info = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
int targetSdkVersion = info.applicationInfo.targetSdkVersion;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (targetSdkVersion >= Build.VERSION_CODES.M) {
initPermission();
}
}else {
InitVoice();
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

关于Android 6.0中怎么动态申请权限问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

权限 动态 用户 事件 问题 文件 方法 更多 清单 隐私 帮助 解答 易行 危险 成功 简单易行 代码 代表 信息 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 graph数据库设计 linux系统怎么重启X服务器 网络安全我们学生要怎么做 米纳通网络技术公司 全国书画大师数据库林树镇 二维表 数据库 ctf金融业网络安全攻防 广东办公系统软件开发价钱是多少 支持网络安全的方法 数据库分库有哪些副作用 701音乐数据库功能 上海net软件开发要多少钱 网约车平台数据库接入 二合一控制服务器 青海软件开发外包详情 魔兽世界服务器比例在哪里查询 软件开发完成后怎么上线 什么是工业软件开发 天下捷融互联网科技小贷怎么样 更改域控服务器管理员 第七章计算机网络技术及应用3 王者上次登录服务器忘记怎么办 网络安全教育周主题 网络技术在其他哪些领域有用 怎么使用数据库的索引 贵州网络安全系统有哪些 vue怎么直接访问服务器文件 网络安全监督检查第三方 服务器防火墙软件自动开启 python将txt写入数据库
0