开发时遇到7.0手机如果相机权限为询问或者禁止时,点击拍照没有任何作用
使用官方推荐配置AndroidManiFest的方法依旧不行
选择使用大部分app权限没有时的做法
如果权限是询问:则申请允许权限
如果权限是禁止:则跳转权限管理app,并申请开启相机权限
如果遇到其他权限方法类似
1.创建判断当前摄像头是否有用的工具类
public class CameraCanUseUtils {
/**
* 测试当前摄像头能否被使用
*
* @return
*/
public static boolean isCameraCanUse() {
boolean canUse = true;//
Camera mCamera = null;
try {
mCamera = Camera.open(0);
mCamera.setDisplayOrientation(90);
} catch (Exception e) {
canUse = false;
}
if (canUse) {
mCamera.release();
mCamera = null;
}
//Timber.v("isCameraCanuse="+canUse);
return canUse;
}
}
2.如果摄像头可用,走正常操作;不可用,申请开启权限
if(CameraCanUseUtils.isCameraCanUse()) {
//摄像头可用
selectPicFromCamera();
} else{
//摄像头不可用
ToastUtils.toastS(mContext, "没相机权限,请到应用程序权限管理开启权限");
//跳转至app设置
getAppDetailSettingIntent();
}
//跳转app设置
private void getAppDetailSettingIntent() {
Intent localIntent = new Intent();
if (Build.VERSION.SDK_INT >= 9) {
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
localIntent.setData(Uri.fromParts("package", context.getPackageName(), null));
} else if (Build.VERSION.SDK_INT <= 8) {
localIntent.setAction(Intent.ACTION_VIEW);
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
}
startActivity(localIntent);
}