Pregunta

Al igual que el iPhone tiene un UIImagePickerController dejar que los cuadros de acceso de usuario almacenados en el dispositivo, tenemos un control similar en el SDK de Android?

Gracias.

¿Fue útil?

Solución

Puede usestartActivityForResult, pasando en un Intento que describe una acción que desea completado y el origen de datos y para realizar la acción.

Por suerte para usted, Android incluye una acción para recoger las cosas: Intent.ACTION__PICK y una fuente de datos que contiene las imágenes: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI de imágenes en el dispositivo local o android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI de imágenes en la tarjeta SD.

Llamada startActivityForResult que pasa en la accion de captura y las imágenes que desea que el usuario seleccione de la siguiente manera:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

Entonces anular onActivityResult a escuchar para el usuario después de haber realizado una selección.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}

Una vez que tenga la imagen Uri se puede usar para acceder a la imagen y hacer lo que tiene que ver con ello.

Otros consejos

También puede hacer:

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

Este recogerá imágenes a través de todos los almacenes.

Sólo una actualización de la respuesta dada por Reto. Usted puede hacer esto a escala de la imagen:

private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top