之前调试的时候,出现了一个问题,就是当我打开二维码扫描界面的时候,对于一部分手机一直不会出现那个扫描框,这点我也很是郁闷,这不好整啊,毕竟二维码界面是用的别人的,怎么改啊?这个时候我分析了一下原因,最后知道只有部分6.0的手机才会出现这种情况,那么这就简单了。下面我就对关于6.0手机动态申请安全权限做一下讲解:
对于6.0以下的权限及在安装的时候,根据权限声明产生一个权限列表,用户只有在同意之后才能完成app的安装,造成了我们想要使用某个app,就只能默认接受其一些不必要的权限,而在6.0以后,当app需要我们授予不恰当的权限的时候,我们可以予以拒绝。但是这些权限也是有限制的,比如说只是针对一些安全权限做动态授权处理,如打开手机摄像头、打开联系人、打开录音等等,这些涉及到用户安全权限的时候,就要我们开发者手动去请求用户打开权限。废话就到这里,下面看具体实现。
1、检查权限:
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
}else{
//
}
ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。当返回DENIED就需要进行申请授权了。
2、申请权限:
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
第二个参数是需要申请的权限的字符串数组,第三个参数为请求码,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过弹出对话框一个个的询问用户是否授权。
3、权限的申请回调:
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[]