NullPointerException при вызове data.getData внутри OnActivityResult ()? - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь отобразить путь сохраненного снимка, сделанного камерой, вызывая

`data.getdata` 

внутри тоста, но приложение вылетает.Я также пытался data.getDataString, но это не решило

ничего.

Код:

@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");
            Uri uriSavedImage = Uri.fromFile(image);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            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(), "Image Saved To: "+data.getData(), Toast.LENGTH_SHORT).show();
    }

Ответы [ 3 ]

1 голос
/ 21 марта 2012

беда результата камеры

просмотрел это ..

пробовали ли вы data.getExtras (). Get (TAG);

1 голос
/ 21 марта 2012

Получите пакет дополнений из своего намерения, есть результирующие данные, доступные.

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

Не забудьте проверить ноль, так как у меня сложилось впечатление, что тег «данные» не являетсядействует на всех телефонах.

edit: более точный код, т. е. точное решение здесь.

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

Также используйте, data.getData().toString()

data.getData().toString() должно работать.Но на самом деле это не даст вам фактический путь сохраненного изображения.Это скорее даст вам URI этого изображения.Вам нужно будет проанализировать этот URI, используя.

public String getRealPathFromURI(String uriString) {
    try {
        String[] proj = { MediaStore.Image.Media.DATA};
        Log.d("First", proj[0]);
        Cursor cursor = managedQuery(Uri.parse(uriString), proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Image.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return "Alas!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...