2012-03-06 16 views
12

Estoy tratando de obtener una imagen usando la galería incorporada. Funciona bien en el emulador y solo abre la galería, pero en el dispositivo real me da múltiples elige uno de ellos es el administrador de archivos que me permite elegir cualquier tipo de archivos, incluso los archivos apk, por supuesto, la caída de la aplicación después de eso Tengo este códigoAndroid obtener solo la imagen de la galería

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
} 

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


    if (resultCode == RESULT_OK) { 


    switch(requestCode){  

     case SELECT_PICTURE: 
       Uri selectedImageUri = data.getData(); 


      break; 
     } 
     } 

}

+0

Desinstale el administrador de archivos, ya que es claramente una basura. Dicho esto, StackOverflow es para programar preguntas, y esta no es una pregunta. – CommonsWare

+1

Me parece que su pregunta es "¿Cómo le permito al usuario seleccionar una foto usando la galería con un intento"? – FoamyGuy

Respuesta

24

intenta utilizar

.... 
    Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType("image/*"); 
    startActivityForResult(intent, SELECT_PICTURE); 
.... 
+1

Gracias esto fue muy útil – mrl25

+2

La aplicación Android 4.4 Fotos stock no tiene esto en cuenta. –

+0

La única respuesta afirmativa. Busqué mucho tiempo; mi error fue establecer intent.setAction (Intent.ACTION_GET_CONTENT); Muchos androides me dan la opción de elegir entre esas aplicaciones, como google drive, viber photoes, pero no pude analizar uri. Gracias por su respuesta, seguro que todas las galerías estándar deberían manejar esto correctamente (lo comprobé en 4 teléfonos) –

1

Trate de usar esto para su intención:

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 

Si estás interesado en utilizar siempre la de la Galería de aplicaciones Yo no pienso necesidad de utilizar un selector de Intención por lo que podría ser capaz de cambiar su startActivity a esto:

startActivityForResult(intent, SELECT_PICTURE); 
5
public void ChoosePicture(View v) { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, 1); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case 1: 
    { 
     if (resultCode == RESULT_OK) 
     { 
     Uri photoUri = data.getData(); 
     if (photoUri != null) 
     { 
     try { 
       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 
       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String filePath = cursor.getString(columnIndex); 
       cursor.close(); 
       bMap_image = BitmapFactory.decodeFile(filePath); 
       ImageView img = (ImageView) findViewById(R.id.gallery1); 
       img.setImageBitmap(bMap_image); 


    }catch(Exception e) 
     {} 
     } 
    }// resultCode 
    }// case 1 
    }// switch, request code 
}// public void onActivityResult 

MMH, de alguna manera cambió la posición de mis últimos "}".

Este código le permitirá seleccionar una imagen de la galería y luego mostrarla en una vista de imagen.

Utilizo este código en mi dispositivo, y funciona como un encanto.

Cuestiones relacionadas