Android动态申请权限知识

1.Android6.0(APIlevel23)开始targetSdkVersion>=23的应用必须在运行时动态申请权限

2.权限请求对话框是操作系统进行管理的,应用无法也不应该干预。
3.系统对话框描述的是权限组而不是某个具体权限
4.调用requestPermissions并不意味着系统一定会弹出权限请求对话框,也就是说不能假设调用该方法后就发生了用户交互,因为如果用户之前勾选了“禁止后不再询问”或者系统策略禁止应用获取权限,那么系统会直接拒绝此次权限请求,没有任何交互
5.如果某个权限跟应用的主要功能无关,如应用中广告可能需要位置权限,用户可能很费解,此时在申请权限之前弹出对话框向用户解释为什么需要这个权限是个不错的选择。但不要在所有申请权限之前都弹出对话框解释,因为频繁地打断用户的操作或让用户进行选择容易让用户不耐烦
6.Fragment中的onRequestPermissionsResult方法只有在使用Fragment#requestPermissions方法申请权限时才可能接收到回调,建议将权限放在所属Activity中申请和处理
7.应用应该尽量少地申请权限,像让用户拍一张照片或者选择一张图片完全不需要相机权限和外存权限,可以通过隐式Intent拉起系统相机或其他应用完成,应用只需要在onActivityResult回调中接收数据就行了。但是有一点一定要注意,如果你在AndroidManifest.xml文件中声明了相机权限,你就必须得动态申请并获得相机权限才能拉起系统相机.

android


//请求通讯录权限的模板代码如下
privatevoidshowContactsWithPermissionsCheck{
if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.READ_CONTACTS)
!=PackageManager.PERMISSION_GRANTED){
if(ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.READ_CONTACTS)){
//TODO:弹框解释为什么需要这个权限.【下一步】->再次请求权限
}else{
ActivityCompat.requestPermissions(MainActivity.this,
newString[]{Manifest.permission.READ_CONTACTS},
RC_CONTACTS);
}
}else{
showContacts;
}
}
privatevoidshowContacts{
startActivity(ContactsActivity.getIntent(MainActivity.this));
}
@Override
publicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,
@NonNullint[]grantResults){
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
switch(requestCode){
caseRC_CONTACTS:
if(grantResults.length>0
&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
showContacts;
}else{
if(!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
Manifest.permission.READ_CONTACTS)){
//TODO:弹框引导用户去设置页主动授予该权限.【去设置】->应用信息页
}else{
//TODO:弹框解释为什么需要这个权限.【下一步】->再次请求权限
}
}
break;
default:
break;
}
}
@Override
protectedvoidonActivityResult(intrequestCode,intresultCode,@NullableIntentdata){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==RC_SETTINGS){
//TODO:在用户主动授予权限后重新检查权限,但不要在这里进行事务提交等生命周期敏感操作
}
}

© 版权声明
好牛新坐标
版权声明:
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com

相关文章