Obtenir L'Uri de l'image dans onActivityResult après avoir pris la photo?

j'ai ce code:

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), CAMERA_IMAGE);

qui permet à cet utilisateur de prendre une photo. Maintenant, comment pourrais-je obtenir le Uri de cette photo dans onActivityResult ? C'est un Intent en plus? C'est dans Intent.getData() ?

20
demandé sur Mohit Deshpande 2011-02-20 23:16:06

4 réponses

protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri u = intent.getData();
}

soit dit en passant... il y a un bug avec cette intention dans certains appareils. Jetez un oeil à cette réponse pour savoir comment le contourner.

27
répondu Cristian 2017-05-23 10:29:31

au lieu de simplement lancer l'intention, assurez-vous également de dire l'intention où vous voulez la photo.

Uri uri = Uri.parse("file://somewhere_that_you_choose");
Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(photoIntent, CAMERA_IMAGE);

alors quand vous obtenez votre méthode onActivityResult() appelée, si c'était un succès ouvrez juste un flux à L'URI et tout devrait être mis.

8
répondu Greg Giacovelli 2011-02-20 20:28:15
Uri uri = null;
if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK){
  uri = data.getData();
}
2
répondu anson 2017-02-08 07:41:00
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

          Bitmap photo = (Bitmap) data.getExtras().get("data");
          Uri fileUri = Utils.getUri(getActivity(), photo);
    }  
}

public String getRealPathFromURI (Uri contentUri) {
    String path = null;
    String[] proj = { MediaStore.MediaColumns.DATA };
    Cursor cursor = getActivity().getContentResolver().query(contentUri, proj, null, null, null);
    if (cursor.moveToFirst()) {
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
        path = cursor.getString(column_index);
    }
    cursor.close();
    return path;
}
0
répondu Vignes 2018-04-16 11:52:25