android 在 6.0 (android M) 引入动态权限,应用在安装时不会授予危险权限(危险权限列表),应用在运行的时候动态申请,用户确认后才可以拿到权限。 这一套在 targetSdkVersion >= 23 的情况下没有任何问题,23 以下呢?应用安装的时候默认授予所有权限,但是不(keng)幸(die) 的是 在运行 6.0 及以上的手机上用户可以主动关闭权限,而且应用还拿不到任何通知。
下面总结了下不同版本权限的影响:
targetSdkVersion/手机系统 | 不小于 6.0 | 小于 6.0 |
---|---|---|
小于 23 | 安装时默认授予权限,用户可以取消权限(取消时手机会弹出提醒"取消可能导致无法运行"),app 不能动态申请 | 安装时默认授予权限,且用户不能取消 |
不小于 23 | 安装默认不授予权限,需要 app 动态申请权限, 或者用户主动设置 | 安装时默认授予权限,且用户不能取消 |
因为在一些手机上有些权限是默认关闭的,(vivo 手机)华为(6.0 以上)、小米(6.0 以上)手机首次安装回提醒,用户有可能拒绝等,因此如果 app 不兼容 api23 的话至少也要做下权限检查。
那么现在的问题是 targetsdkversion <= 22 该怎么判断有没有权限呢?
//以申请定位为例
//版本判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//判断权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//请求权限
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 5);
}else {
//权限有啦
}
}else {
//底版本直接不要权限申请
}
//回调函数
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==5&&grantResults.length>0&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
//权限申请成功
}else{
//权限申请失败
}
}
-
哪些权限需要动态申请?
权限组 | 权限 | 权限名 |
---|---|---|
CALENDAR | READ_CALENDAR WRITE_CALENDAR | |
CAMERA | CAMERA | |
CONTACTS | READ_CONTACTS WRITE_CONTACTS GET_ACCOUNTS | |
LOCATION | ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION | |
MICROPHONE | RECORD_AUDIO | |
PHONE | READ_PHONE_STATE CALL_PHONE READ_CALL_LOG WRITE_CALL_LOG ADD_VOICEMAIL USE_SIP PROCESS_OUTGOING_CALLS | |
SENSORS | BODY_SENSORS | |
SMS | SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEIVE_MMS | |
STORAGE | READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE |
-
弹出权限申请提示后如果用户拒绝下次是否还会再弹出?
拒绝了,下次进入这个页面或者 app 会再一次进行检测权限,如果用户接受了,会应用全 app,也就是说不管你在那个页面接受了权限,那么这个权限就会自动默认你接受了,不会在弹框
-
改成动态申请权限,我们的targetSdkVersion是否需要更新到23以上?
建议升级到 23,当然可以不用升级,我们做兼容是为了那些不自动付给我们危险权限的手机,做兼容
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于