Приложение вылетает при попытке взять и переименовать картинку - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь создать кнопку, которая открывает камеру и делает снимок, а затем переименовывает этот снимок.Я искал код и нашел его, но когда я вспоминаю метод onClick, приложение вылетает.

Код камеры

        // 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" />

Я даже нашел это приложение для выполнения той же задачи, но при запуске ... Приложение также аварийно завершилось

журнал сбоев

    --------- 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)

любая помощь по тому, что мне не хватает или что я делаю неправильно

1 Ответ

0 голосов
/ 13 сентября 2018

Первый сбой - пользователь отключил разрешение вашей камеры.Или, возможно, разрешение камеры приложения камеры.Вы можете проверить свои разрешения, запустив checkPermission, но их невозможно остановить (и не должно быть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...