android 权限拒绝时的问题解决(详解)
本篇博客主要针对于相机权限的解决,因为公司项目中二维码遇到这个问题,在网上找了两天的方案,几乎都是同一的解决办法,try catch;
特此我自己写一篇关于二维码权限的拒绝问题解决办法,还添加了6.0权限等问题,希望对你们有所帮助,我的问题只针对于二维码调用相机权限,
对于其他权限,我没有深入的了解,不知能否对于其他权限问题有所帮助,谅解。
问题的解决办法:
1.向项目中部署Module形式的lib_zxing。
2.在调用二维码时的事件做如下权限判断
if (Build.VERSION.SDK_INT >= 23) {
//如果sdk版本大于23.表示6.0以上,走6.0权限
checkPer();
} else {
//否则跳转二维码扫描页面
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
3.在lib_zxing中的CaptrueActivity中做如下修改
//我们在点击拒绝时,会出现一个相机相关的异常,点击允许没有异常
//如果有异常。我们针对这个异常做相应的处理
if (e != null) {
Log.e(“TAG”, “callBack: “, e);
//这个是判断6.0以下权限,在点击拒绝时做相应处理
if(Build.VERSION.SDK_INT < 23){
//获取异常,保证只有在这个异常时,才会给出相应的提醒
if(e.toString().equals(“java.lang.RuntimeException: Fail to connect to camera service”)){
Toast.makeText(CaptureActivity.this,”亲!您拒绝了权限申请!”,Toast.LENGTH_LONG).show();
//将页面销毁
finish();
}
}
}
- 6.0权限方案
首先添加依赖
compile ‘pub.devrel1.0.1’
private void checkPer() {
if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA)) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
} else {
EasyPermissions.requestPermissions(this, “为了您能够正常使用扫一扫功能,juxin商城需要获得相机权限”,
RC_CAMERA, Manifest.permission.CAMERA);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, List
// 请求权限已经被授权
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onPermissionsDenied(int requestCode, List
// 请求权限被拒绝
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setRationale(“没有该权限,此应用程序可能无法正常工作。打开应用设置屏幕以修改应用权限”).build().show();
}
}
还没有评论,来说两句吧...