Question

Tout comme l'iPhone a un UIImagePickerController de laisser les images d'accès utilisateur stockées sur l'appareil, ne nous avons un contrôle similaire dans le SDK Android?

Merci.

Était-ce utile?

La solution

Vous pouvez usestartActivityForResult, en passant dans une intention qui décrit une action que vous voulez et terminé 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 images contenant une source de données: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI pour des images sur le dispositif local ou android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI des images sur la carte SD.

Appel startActivityForResult passe dans l'action de sélection et les images que vous souhaitez que l'utilisateur pour sélectionner comme ceci:

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

surchargent Ensuite onActivityResult pour écouter 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.

Autres conseils

Vous pouvez également faire:

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

choisira des images dans toutes les mémoires.

Juste une mise à jour à la réponse donnée par Reto. Vous pouvez le faire à l'échelle de 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);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top