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

Tout comme l’iPhone a un UIImagePickerController pour permettre à l’utilisateur d’accéder aux images stockées sur l’appareil, avons-nous un contrôle similaire dans le SDK Android?

Merci.

Vous pouvez utiliser startActivityForResult , en transmettant un Intent décrivant une action que vous souhaitez exécuter et une source de données pour exécuter l’action.

Heureusement pour vous, Android inclut une Action pour choisir 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 l’action de sélection et les images que vous souhaitez que l’utilisateur sélectionne comme ceci:

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

onActivityResult ensuite onActivityResult pour écouter l’utilisateur ayant effectué 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 Uri, vous pouvez l’utiliser pour accéder à l’image et faire ce dont vous avez besoin.

Vous pouvez aussi faire:

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

Cela permettra de choisir des images sur tous les stockages.

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

 private Ssortingng getPath(Uri uri) { Ssortingng[] 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.getSsortingng(column_index); }