在android 6.0 以后的系统需要用户在使用的过程中进行动态的授权,比如
<!--请求访问使用照相设备--> <uses-permission android:name="android.permission.CAMERA" />
如果没有这么做那你可能会遇到一个异常
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.sec.android.app.camera/.Camera clip={text/uri-list U:file:///storage/emulated/0image/1493198673138.png} (has extras) } from ProcessRecord{2a79023 316:com.***.***/u0a233} (pid=316, uid=10233) with revoked permission android.permission.CAMERA
private void onSelectCategory(){ if (Build.VERSION.SDK_INT >= 23) { int checkCallPhonePermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA); if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},0); return; }else{ takePhoto(); } } else { takePhoto(); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case 0: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted takePhoto(); } else { // Permission Denied Toast.makeText(MainActivity.this, "这一刻你拒绝了我。", Toast.LENGTH_SHORT) .show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); } }