您的位置:首页 > 移动开发 > Android开发

关于android6.0权限适配6.0系统以下的问题总结(二维码扫描)

2016-10-19 16:50 531 查看


本人最新公众号《Android百科全书》,汇集了各个公众号的优秀文章,进行分类整理,让大家能够更方便的查阅,希望大家多多支持,来个关注奥。

adnroid6.0系统的权限问题在一般情况下可以直接申请,但在某些情况下,会出现6.0以下系统调用权限申请时,系统给出的判断直接是申请成功,此时,我们就需要一些特殊的处理,来适配6.0以下的系统,本文讲述的就是本人开发二维码扫描界面出现的一些问题。

当6.0系统调用照相机时,我们知道,首先应该去手动申请权限,这个权限申请在6.0以下是不需要操作的,系统默认申请,但是google为了android系统的安全,在6.0系统上加了这么一个模式,就是只要涉及危险权限,必须手动申请。

但是在一些6.0以下的系统,你申请权限时,他在你没有点击确认或者拒绝时,直接有一个判断,判断你申请成功,此时,我们点击拒绝,就会出现一些bug,比如二维码扫描界面无法正常工作,我们要做的操作就是在这里。

代码块

申请权限代码(本人在这里使用的是权限工具包 AndroidAcp,也可以自己书写)

Acp.getInstance(getActivity())
.request(new AcpOptions.Builder()
.setPermissions(Manifest.permission.CAMERA)
.build(), new AcpListener() {
@Override
public void onGranted() {
Intent intent = new Intent(getContext(), MyCaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);

}

@Override
public void onDenied(List<String> permissions) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("照相权限被禁止,无法使用该功能!");
builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().finish();
dialog.dismiss();
//                                                               ToastUtils.showToastShort(String.valueOf((int) rating));

}
});
builder.create().show();

}
});


这里是正常的写法,就是对能正常走过权限判断的版本,接下我们要做的就是在使用照相机的界面进行修改,在那里处理直接通过的情况,代码如下:

代码块

//界面上使用
try {
checkCameraPermissions();
} catch (IOException e) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("照相权限被禁止,无法使用该功能!");
builder.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().finish();
dialog.dismiss();
}
});
builder.create().show();

}

/**
* 检查相机权限,如果不能打开相机则抛出异常
*/
public static void checkCameraPermissions() throws IOException {
try {
Camera camera = Camera.open();
if (camera != null) {
camera.release();
camera = null;
}
} catch (Exception e) {
throw new IOException();
}
}


以上就是我对6.0权限问题处理的总结,如果你有更好的方式,一起来交流下。

本博客不定时推送,总结一些本人开发时遇到的一些问题,如果你喜欢,关注我吧。( ⊙ o ⊙ )( ⊙ o ⊙ )( ⊙ o ⊙ )

( ^_^ )/~~拜拜
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息