2012-03-09 16 views
10

me retracto Uri de una imagen de la galería usandoUri volvió después de ACTION_GET_CONTENT de la galería no está funcionando en setImageURI() de ImageView

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

y tratando de mostrar la imagen por

imageView.setImageURI(uri); 

aquí , uri es Uri de la imagen recibida en onActivityResult por intent.getData().

pero no se muestra ninguna imagen. Además, para

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

file.exists() devuelve falso.

+0

¿estás revisando el valor de uri ... registra y comprueba ... pega el uri aquí – Ronnie

Respuesta

22

El problema es que usted obtiene el Uri pero desde ese uri tiene que crear un mapa de bits para mostrarlo en su Imageview. Hay varios mecanismos para hacer lo mismo entre ellos es este código.

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

funciona para mí ... gracias :) –

0

lanzamiento el Selector Galería de imágenes

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 es el código de solicitud definida como una variable de instancia.

private int PICK_IMAGE_REQUEST = 1; 

Mostrar la imagen seleccionada en la Actividad/Fragmento

@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(); 
     } 
    } 
} 

Su diseño será necesario tener una ImageView así:

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