Closed hy20160705 closed 4 years ago
之前我的项目我用了这个项目的前身com.lzy.imagepicker 调用摄像头没有发生过异常 现在我有一个特别小的项目 只是简单的调用摄像头拍照 所以没有引用你的库 问题 在我的项目中 只是简单的拍照+图片上传 在调用摄像头的过程中 有些手机机型抱了crash 也在网上查了许久 但是还是没有解决 请问一下这个问题是怎么导致的呢 谢谢🙏
java.lang.SecurityException
Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.huawei.camera/.ThirdCamera clip={text/uri-list U:content://com.chs.cxrbusinessclient.fileprovider/external_storage_root/Android/data/com.chs.cxrbusinessclient/cache/MyPhoto/20200327152211.png} (has extras) } from ProcessRecord{cb7fbf7 13570:com.chs.cxrbusinessclient/u0a176} (pid=13570, uid=10176) with revoked permission android.permission.CAMERA
* 项目简单代码
// 调用摄像头拍照 case R.id.iv_store_photo: //权限没有授权,进入授权界面 if (mPermissionsChecker.judgePermissions(PERMISSIONS)) { ActivityCompat.requestPermissions(this, PERMISSIONS, TAKEPHOTO_REQUEST_CODE); } else { takePhotoMethod(); } break;
// 权限申请回调 onRequestPermissionsResult(){ if (requestCode == TAKEPHOTO_REQUEST_CODE && hasAllPermissionsGranted(grantResults)) { takePhotoMethod(); } else if (requestCode == TAKEPHOTO_REQUEST_CODE) { ToastUtils.showShortToast("请手动开启app相机和存储权限"); goIntentSetting(); } }
// 调起摄像头拍照 String fileName = ""; private void takePhotoMethod() { fileName = CameraPhotoUtils.getPhotoFileName(this);
// new一个File用来存放拍摄到的照片 File imageFile =new File(fileName); // 如果存在就删了重新创建 try { if (imageFile.exists()) { imageFile.delete(); } imageFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); } // 将存储地址转化成uri对象 if (Build.VERSION.SDK_INT >= 24) { photoUri = FileProvider.getUriForFile(ApplyBusinessActivity.this, ApplyBusinessActivity.this.getApplicationContext().getPackageName() + ".fileprovider", imageFile); } else { photoUri = Uri.fromFile(imageFile); } // 设置打开照相的Intent Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); // 设置相片的输出uri为刚才转化的imageUri intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); // 开启相机程序,设置requestCode为TOKE_PHOTO startActivityForResult(intent, TAKE_PHOTO); }
/**相关方法***/ // 含有全部的权限 private boolean hasAllPermissionsGranted(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; } // mPermissionsChecker.judgePermissions() /**
抱歉,这么晚才看到。相信你已经解决了问题。
之前我的项目我用了这个项目的前身com.lzy.imagepicker 调用摄像头没有发生过异常 现在我有一个特别小的项目 只是简单的调用摄像头拍照 所以没有引用你的库 问题 在我的项目中 只是简单的拍照+图片上传 在调用摄像头的过程中 有些手机机型抱了crash 也在网上查了许久 但是还是没有解决 请问一下这个问题是怎么导致的呢 谢谢🙏
main(1)
java.lang.SecurityException
Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.huawei.camera/.ThirdCamera clip={text/uri-list U:content://com.chs.cxrbusinessclient.fileprovider/external_storage_root/Android/data/com.chs.cxrbusinessclient/cache/MyPhoto/20200327152211.png} (has extras) } from ProcessRecord{cb7fbf7 13570:com.chs.cxrbusinessclient/u0a176} (pid=13570, uid=10176) with revoked permission android.permission.CAMERA
// 调用摄像头拍照 case R.id.iv_store_photo: //权限没有授权,进入授权界面 if (mPermissionsChecker.judgePermissions(PERMISSIONS)) { ActivityCompat.requestPermissions(this, PERMISSIONS, TAKEPHOTO_REQUEST_CODE); } else { takePhotoMethod(); } break;
// 权限申请回调 onRequestPermissionsResult(){ if (requestCode == TAKEPHOTO_REQUEST_CODE && hasAllPermissionsGranted(grantResults)) { takePhotoMethod(); } else if (requestCode == TAKEPHOTO_REQUEST_CODE) { ToastUtils.showShortToast("请手动开启app相机和存储权限"); goIntentSetting(); } }
// 调起摄像头拍照 String fileName = ""; private void takePhotoMethod() { fileName = CameraPhotoUtils.getPhotoFileName(this);
/**相关方法***/ // 含有全部的权限 private boolean hasAllPermissionsGranted(int[] grantResults) { for (int grantResult : grantResults) { if (grantResult == PackageManager.PERMISSION_DENIED) { return false; } } return true; } // mPermissionsChecker.judgePermissions() /**