Android 应用程序在尝试拍摄和重命名图片时崩溃
我正在尝试创建一个按钮,打开相机并拍照,然后重命名这张照片。我搜索了代码,找到了一个,但是当我回忆起onClick方法时,应用程序崩溃了 摄像机代码Android 应用程序在尝试拍摄和重命名图片时崩溃,android,android-intent,Android,Android Intent,我正在尝试创建一个按钮,打开相机并拍照,然后重命名这张照片。我搜索了代码,找到了一个,但是当我回忆起onClick方法时,应用程序崩溃了 摄像机代码 // Capture Image code Button savePicture = findViewById(R.id.act_edit_capture_image); savePicture.setOnClickListener(new View.OnClickListener() { @Override
// Capture Image code
Button savePicture = findViewById(R.id.act_edit_capture_image);
savePicture.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
//camera stuff
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("ddMMyy_HHmmss").format(new Date());
//folder stuff
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + " Soleya");
File image = new File(dir, "Sol_" + actId + "_" + timeStamp + ".jpg");
Uri imageUri = FileProvider.getUriForFile(
EditActivity.this,
"com.example.mustafa.progressupdate.provider", //(use your app signature + ".provider" )
image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri );
startActivityForResult(imageIntent, REQUEST_TAKE_PHOTO);
}
});
坠机日志
--------- beginning of crash
09-12 23:46:22.387 23677-23677/com.example.mustafa.progressupdate E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mustafa.progressupdate, PID: 23677
java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera2/com.android.camera.CaptureActivity clip={text/uri-list U:content://com.example.mustafa.progressupdate.provider/external_files/Pictures%20Soleya/Sol_A22430_120918_234622.jpg} (has extras) } from ProcessRecord{ae97546 23677:com.example.mustafa.progressupdate/u0a94} (pid=23677, uid=10094) with revoked permission android.permission.CAMERA
at android.os.Parcel.readException(Parcel.java:1683)
at android.os.Parcel.readException(Parcel.java:1636)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3071)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1518)
at android.app.Activity.startActivityForResult(Activity.java:4224)
at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:68)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:744)
at com.example.mustafa.progressupdate.EditActivity$7.onClick(EditActivity.java:303)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
明显提前发射
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
关于我丢失了什么或我做错了什么的任何帮助第一次崩溃-用户关闭了您的相机权限。或者可能是摄像头应用程序的摄像头权限。您可以通过运行checkPermission来检查您的权限,但无法停止它们(也不应该停止)。我在mainfest中添加了摄像头权限@穆斯塔法,这并不意味着它被授予。Android现在有运行时权限-即使在清单中有权限,也可以关闭一些权限。添加了授予权限的代码,但仍然崩溃!
--------- beginning of crash
09-12 23:50:32.410 24201-24201/com.example.nirvan.cameraexample3 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.nirvan.cameraexample3, PID: 24201
android.os.FileUriExposedException: file:///storage/emulated/0/Pictures/20180912_235032.jpg exposed beyond app through ClipData.Item.getUri()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
at android.net.Uri.checkFileUriExposed(Uri.java:2346)
at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8909)
at android.content.Intent.prepareToLeaveProcess(Intent.java:8894)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)
at android.app.Activity.startActivityForResult(Activity.java:4224)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:4183)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:871)
at com.example.nirvan.cameraexample3.MainActivity$1.onClick(MainActivity.java:52)
at android.view.View.performClick(View.java:5610)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)