java.lang.RuntimeException: Method called after release()
在今天的BUG里面出现了这么一个错误,其实我这边的操作是,打开APP里面有个要打开摄像头的模块,当时弹框提示是否打开摄像头,当时选择禁用,然后在打开这个摄像头模块 就报这个错了
所以我的解决办法就是,每次打开都检测是否打开了权限
解决办法如下
/**
* 相机检测
* Created by yangbin on 2018/3/19.
*/
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;
}
}
调用:
//调用相机权限判定
if (CameraCanUseUtils.isCameraCanUse()) {
holder = mSurfaceview.getHolder();
holder.addCallback(this);
} else {
Toast.makeText(getActivity(), "没相机权限,请到应用程序权限管理开启权限", Toast.LENGTH_LONG).show();
//跳转至app设置
getAppDetailSettingIntent();
return;
}
// holder = mSurfaceview.getHolder();
// holder.addCallback(this);
}
设置相机
/**
* 相机权限设置
* 跳转至设置页面
*/
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", mContext.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", mContext.getPackageName());
}
startActivity(localIntent);
}