Сохраненный растровый экземпляр не сохраняется на носителе устройства - PullRequest
0 голосов
/ 12 октября 2018

Когда i Время выполнения Программа выдачи исключения по данному пути недоступна.Это реализация моего основного класса активности

Платформа Android включает поддержку различных камер и функций камеры, доступных на устройствах, что позволяет вам захватывать изображения и видео в ваших приложениях.В этом документе обсуждается быстрый и простой подход к захвату изображений и видео, а также описывается продвинутый подход для создания пользовательских настроек камеры для ваших пользователей.

    public class MainActivity extends AppCompatActivity {

        private static final int CAMERA_REQUEST_CODE = 1023;
        ImageView mImageView;
        Button mButton;
        Button save;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            mImageView = (ImageView)findViewById(R.id.captureView);
            mButton  =(Button)findViewById(R.id.captureBtn);
            save = (Button)findViewById(R.id.saveBtn);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent camIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(camIntent,CAMERA_REQUEST_CODE);
                    }
            });

            save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
            });

        }


    private void SaveImage(Bitmap finalBitmap) {

        String root = Environment.getExternalStorageDirectory().toString();
        File myDir = new File(root + "/DCIM/");
        myDir.mkdir();
        Random generator = new Random();
        int n = 10000;
        n = generator.nextInt(n);
        String fname = "Image-"+ n +".jpg";
        File file = new File (myDir, fname);
        if (file.exists ()) file.delete ();
        try {
            FileOutputStream out = new FileOutputStream(file);
            finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==CAMERA_REQUEST_CODE){
            Bitmap bm = (Bitmap)data.getExtras().get("data");
             SaveImage(bm);
            mImageView.setImageBitmap(bm);
        }
    }
}

Это исключение, которое я получил во время выполнения

W/System.err: java.io.FileNotFoundException: /storage/emulated/0/DCIM/Image-8834.jpg (Permission denied)
W/System.err:     at java.io.FileOutputStream.open0(Native Method)
                  at java.io.FileOutputStream.open(FileOutputStream.java:287)
                  at java.io.FileOutputStream.<init>(FileOutputStream.java:223)
W/System.err:     at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
                  at com.project.melan.cameraapp.MainActivity.SaveImage(MainActivity.java:62)
                  at com.project.melan.cameraapp.MainActivity.onActivityResult(MainActivity.java:79)
                  at android.app.Activity.dispatchActivityResult(Activity.java:7290)
W/System.err:     at android.app.ActivityThread.deliverResults(ActivityThread.java:4267)
                  at android.app.ActivityThread.handleSendResult(ActivityThread.java:4315)
                  at android.app.ActivityThread.-wrap19(Unknown Source:0)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1647)
                  at android.os.Handler.dispatchMessage(Handler.java:106)
W/System.err:     at android.os.Looper.loop(Looper.java:164)
                  at android.app.ActivityThread.main(ActivityThread.java:6518)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Application terminated.

Спасибо, если кто-нибудь поможет решить это исключение.

...