42 votes

Accéder aux images de l'application Images dans mon application Android

Tout comme l'iPhone est doté d'un UIImagePickerController permettant aux utilisateurs d'accéder aux images stockées sur l'appareil, disposons-nous d'un contrôle similaire dans le SDK Android?

Merci.

84voto

Reto Meier Points 55904

Vous pouvez utiliser startActivityForResult, passant dans une Intention qui décrit une action que vous voulez achevé et et source de données pour effectuer l'action.

Heureusement pour vous, Android comprend une Action pour la cueillette des choses: Intent.ACTION__PICK et une source de données contenant des images: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI pour les images sur le périphérique local ou android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI pour les images sur la carte SD.

Appelez startActivityForResult passant à la sélection de l'action et les images que vous souhaitez attribuer à l'utilisateur de sélectionner comme ceci:

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

Ensuite remplacer l' onActivityResult de l'écouter pour l'utilisateur ayant fait une sélection.

@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
    } 
}

Une fois que vous avez l'image d'Uri, vous pouvez l'utiliser pour accéder à l'image et à faire tout ce que vous devez faire avec elle.

22voto

jeffreyveon Points 2929

Vous pouvez aussi faire:

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

Cela permettra de choisir des images dans tous les stockages.

1voto

lokoko Points 2496

Juste une mise à jour de la réponse donnée par Reto. Vous pouvez le faire pour redimensionner l'image:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X