восстановить путь сохраненного изображения вызывает сбой - PullRequest
1 голос
/ 21 марта 2012

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

Java-код:

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Images");
            imagesFolder.mkdirs();
            File image = new File(imagesFolder, "img01");
            uriSavedImage = Uri.fromFile(image);
            File f = new File (uriSavedImage.getPath());// <---------
            //imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, f.getPath()); // <---------
            startActivityForResult(imageIntent,CAMERA_REQUEST_CODE);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == CAMERA_REQUEST_CODE) && (resultCode == RESULT_OK)) {

            Toast.makeText(getApplicationContext(),// <---------
                    " "+data.getData(), 
                    Toast.LENGTH_SHORT).show();

1 Ответ

0 голосов
/ 22 марта 2012

Сбой, потому что вы передаете getParent() методу convertImageUriToFile (вы можете увидеть NullPointerException в трассировке стека).Согласно android docs getParent() возвращает ноль, если активность не является встроенной.Скорее всего, у вас нет.

Используйте взамен File f = convertImageUriToFile(uriSavedImage, this);.

Для другой ошибки imageUri, равной null, см. Этот aswer для очень возможного объяснения и решения.

Более того, ваш imageUri является типом "file: //", а не типом "content: //". Чтобы получить из него путь, используйте

new File(uri.getPath());

вместо вашего convertImageUriToFIle() метод.Я думаю, что метод будет работать только для типа "content: //" uris.

На самом деле вам не нужно получать путь к файлу от uri, который вы сделали сами, у вас есть этот путь в строке:

File image = new File(imagesFolder, "img01");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...