programacion - Acceda a imágenes desde la aplicación de Imágenes en mi aplicación de Android
google fotos es privado (3)
Al igual que el iPhone tiene un UIImagePickerController para permitir que el usuario acceda a las imágenes almacenadas en el dispositivo, ¿tenemos un control similar en el SDK de Android?
Gracias.
Puede usar startActivityForResult
, pasando Intent que describe una acción que desea completar y la fuente de datos para realizar la acción.
Afortunadamente para ti, Android incluye una acción para elegir cosas: Intent.ACTION__PICK
y una fuente de datos que contiene imágenes: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
para imágenes en el dispositivo local o android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
para imágenes en la tarjeta SD.
Llame a startActivityForResult
pasando la acción de selección y las imágenes que desea que el usuario seleccione de esta manera:
startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);
A continuación, anule onActivityResult
para escuchar que el usuario haya hecho 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 de Uri, puede usarla para acceder a la imagen y hacer lo que tenga que hacer con ella.
También puedes hacer:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
Esto seleccionará imágenes en todos los almacenes.
Solo una actualización de la respuesta dada por Reto. Puedes hacer esto para escalar 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);
}