2012-03-09 2 views
10

sto recupero Uri di un'immagine dalla galleria utilizzandoUri tornato dopo ACTION_GET_CONTENT dalla galleria non funziona in setImageURI() di ImageView

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent, "Choose Picture"), requestCode); 

e cercando di visualizzare l'immagine da

imageView.setImageURI(uri); 

qui , uri è Uri dell'immagine ricevuta in onActivityResult da intent.getData().

ma nessuna immagine viene visualizzata. Inoltre, per

File file=new File(uri.getPath()); 

file.exists() restituisce false.

+0

stai controllando il valore uri .. log e controlla .. incolla l'uri qui – Ronnie

risposta

22

Il problema è che si ottiene l'Uri, ma da quel uri è necessario creare Bitmap per mostrare nella Imageview. Ci sono vari meccanismi per fare lo stesso tra loro è questo codice.

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent, "Choose Picture"), 1); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if(resultCode==RESULT_CANCELED) 
    { 
     // action cancelled 
    } 
    if(resultCode==RESULT_OK) 
    { 
     Uri selectedimg = data.getData(); 
     imageView.setImageBitmap(MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedimg)); 
    } 
} 
+0

funziona per me .. grazie :) –

0

lancio Scelta galleria delle immagini

Intent intent = new Intent(); 
// Show only images, no videos or anything else 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
// Always show the chooser (if there are multiple options available) 
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 

PICK_IMAGE_REQUEST è il codice di richiesta definita come una variabile di istanza.

private int PICK_IMAGE_REQUEST = 1; 

presentarsi l'immagine selezionata in Attività/Frammento

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

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 

     Uri uri = data.getData(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
      // Log.d(TAG, String.valueOf(bitmap)); 

      ImageView imageView = (ImageView) findViewById(R.id.imageView); 
      imageView.setImageBitmap(bitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Il layout sarà necessario avere un ImageView come questo:

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" />