以前我们做android是直接在AndroidManifest里面加上
<uses-permission android:name="android.permission.CAMERA" />
然后就直接调用,比如:
//调用相机
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
if (isExistSd()) {
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(),fileName)));
}
startActivityForResult(intent,REQUEST_TO_CAMERA);
但是自从6.0以后,就不行了,需要给它增加权限才可以调用。
实现的方法很简单就是在需要调用到以上授权的时候判断一下。如果没有授权就弹出MaterialDialog提示用户进行授权。
话不多说,上代码
//调用相机
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
if (isExistSd()) {
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File(Environment.getExternalStorageDirectory(),fileName)));
}
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission = ContextCompat.checkSelfPermission(MaiChe_XiangQing.this,
Manifest.permission.CAMERA);
if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MaiChe_XiangQing.this,new String[]{Manifest.permission.CAMERA},222);
return;
}else{
startActivityForResult(intent,REQUEST_TO_CAMERA);
}
} else {
startActivityForResult(intent,REQUEST_TO_CAMERA);
}
这样就ok了。