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.
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.
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.
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 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.