it-swarm.com.de

Holen Sie sich das Bild Uri in onActivityResult nach dem Fotografieren?

Ich habe diesen Code:

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

Dadurch kann der Benutzer ein Foto aufnehmen. Wie würde ich nun die Uri dieses Fotos in onActivityResult bekommen? Ist es eine Intent Extra? Ist es durch Intent.getData()?

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

Übrigens ... bei manchen Geräten gibt es einen Fehler mit dieser Absicht. Werfen Sie einen Blick auf diese Antwort , um zu wissen, wie Sie das Problem umgehen können.

29
Cristian

Vergewissern Sie sich, dass Sie nicht nur die Absicht starten, sondern auch sagen, wo Sie das Foto haben möchten.

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

Wenn Sie dann Ihre onActivityResult () -Methode aufgerufen bekommen, öffnen Sie bei Erfolg einen Stream für den URI, und es sollte alles festgelegt werden.

8
Greg Giacovelli
Uri uri = null;
if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK){
  uri = data.getData();
}
2
anson
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
Vignes