2017-02-16 3 views
0
System.out.println("weeeeeeeee"); 
try { 
    Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
    System.out.println("111111"); 
    System.out.println(Common.getIm1()); 
    Common.getIm1().setImageBitmap(thumbnail); 
} 
catch(Exception e) 
{ 
    System.out.println("dakfls" + e.getMessage()); 
} 

Что происходит в основном в этой функции onactivityresult, что дает мне следующую ошибку. dakflsПозволяет вызывать виртуальный метод «java.lang.Object android.os.Bundle.get (java.lang.String)» в ссылке на нулевой объект. Сбой происходит перед печатью 1111. И мне нужно полное изображение не миниатюру,Android изображение из фотогалереи

Я зову начало от моего фрагмента, как этот

try 
{ 
    Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    getActivity().startActivityForResult(i, 100); 
} 
catch(Exception e) 
{ 

} 
+0

Почему все внутри примерки уловом? –

ответ

0

Попробуйте этот код

Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(i, 100); 

И вы получите путь изображения на вашем onActivityResult:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 100 && resultCode == RESULT_OK && null != data) { 
      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 
      Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); 
      cursor.moveToFirst(); 
      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      String picturePath = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imageView = (ImageView) findViewById(R.id.imgView); 
      imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); 
     } 
    } 
0

Вы просто нужно использовать данные в возвращаемом Intent, так ли стиль содержание Ури, и запрос или открыть его с ContentResolver

Uri dataUri = data.getData(); 
ContentResolver contentResolver = getContentResolver(); 
InputStream stream = contentResolver.openInputStream(dataUri); //if you sure this content Uri is refer a file 
BitmapFactory.decodeStream(stream); 
1

Чтобы правильно получать данные из ACTION_PICK вы должны getData() на Intent. Как это:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
    case 100: 
     if (resultCode == RESULT_OK) { 
      Uri imageUri = data.getData(); 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 
      Common.getIm1().setImageBitmap(bitmap); 
     } 
     break; 
    } 
} 

Примечание: Вы должны поместить свой код 100 в static final int в верхней части класса.

0
photoBrowseButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Intent intent = new Intent(Intent.ACTION_PICK, 
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(intent, DataHolder.INTENT_BROWSE_GALLERY); 
     } 
    }); 

и использовать Ури изображения, как у пожелает следующим

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == DataHolder.INTENT_BROWSE_GALLERY) { 
     if (data != null) { 
      Uri targetUri = data.getData(); 

     } 
    } 

} 
Смежные вопросы