Android 6.0动态获取权限
Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,又新增了运行时权限动态检测
以下权限都需要在运行时判断:
- 身体传感器
- 日历
- 摄像头
- 通讯录
- 地理位置
- 麦克风
- 电话
- 短信
- 存储空间
效果图
Android 6.0添加动态获取权限
Android 6.0没有动态获取权限
动态获取权限
每次在用到摄像头等,这样需要权限的操作的时候,都要动态判断一下权限
// 扫描功能
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//申请CAMERA权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 3);
} else {
Intent openCameraIntent = new Intent(this, CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);
}
如果没有权限,会弹窗提示用户,由用户来决定,是否给予该权限
用户选择完以后,会执行下面的回调
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (3 == requestCode) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 授权
Intent openCameraIntent = new Intent(this, CaptureActivity.class);
startActivityForResult(openCameraIntent, 0);
} else {
// 未授权
}
}
}