Получение всегда NPE - PullRequest
       22

Получение всегда NPE

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

Я хочу выбрать изображение из галереи, а затем получить путь к изображению на SD-карте

     Intent intent = new Intent();
     intent.setType("image/*");
     intent.putExtra("crop", "true");
     intent.setAction(Intent.ACTION_PICK);
     startActivityForResult(Intent.createChooser(intent,
             "Select Picture"), 1);

затем результат действия как

 public void onActivityResult(int requestCode, int resultCode, Intent data) {

    String tempImage = null;
    File f = null ;
        if (resultCode == RESULT_OK && requestCode == 1 && data!=null) 
        {
                        Uri selectedImageUri = data.getData(); // always null Uri WHY?
                        selectedImagePath = getPath(selectedImageUri);
                        if(selectedImagePath!=null)
                        {

                 ........

и метод getPath

public  String getPath(Uri uri) {
        String[] projection = { MediaStore.Images.Media.DATA };
        Cursor cursor = managedQuery(uri, projection, null, null, null);
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

Проблема в том, что Uri selectedImageUri = data.getData(); дает нулевое значение. Вчера все работало нормально.

даже intent не равно нулю.

Я пытался очистить проект, но проблема осталась прежней.

Заранее спасибо !!

* ОБНОВЛЕНИЕ РЕШЕНИЯ *

решение ЗДЕСЬ

1 Ответ

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

Это работает в моем приложении:

Чтобы запустить Image Chooser:

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_PICK);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), 201);

Функция для получения пути SD-карты из URI.

private String decodePath(Uri data)
{        
     Cursor cursor = getContentResolver().query(data, null, null, null, null);
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(ImageColumns.DATA);
     String fileSrc = cursor.getString(idx);   
     return fileSrc;
}
...