In Android kann mit dieser grundlegenden Einrichtung ein Bild aufgenommen werden, wie in here angezeigt.Fehler bei der Erfassung der Android-Kameraaktivität bei Verwendung von ACTION_IMAGE_CAPTURE Intent
protected void dispatchTakePictureIntent(){
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
...
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
//do stuff with the output file
}
}
Jedoch third-party camera apps are unpredictable and cannot be guaranteed to play nice.
Was ist der richtige Weg, um die Ausgabe zu validieren/irgendwelche Fehler zu erfassen? Sollte ich startActivityForResult
innerhalb eines Try/Catch-Blocks wickeln? Was sind die verschiedenen Arten von Ausnahmen, die ich versuchen sollte zu fangen, und was soll ich mit ihnen machen?
Im Hinblick auf die mögliche 'Uri zurück im Ergebnis Intent' ich mit' noch Uri' Nutzung nicht vertraut bin aber auf Grund meiner gerade googeln, sagen Sie, wenn so etwas wie 'Uri myUri = Uri zu überprüfen. parse (data.getExtras(). getString (MediaStore.EXTRA_OUTPUT)); 'gibt ein' Uri' mit einem 'file:' type? – KaliMa
@KaliMa: Nein, ich meine, wenn 'getData()' auf dem 'Intent' übergeben an 'onActivityResult()' gibt das 'Uri' zurück. Ich nehme an, es ist nicht ausgeschlossen, dass eine Kamera-App Ihnen über 'onActivityResult()' 'eine' Intent' mit einem 'EXTRA_OUTPUT'-Extra schicken kann, aber von diesem Szenario habe ich noch nichts gehört. Ich habe von Kamera-Apps gehört, die den "Uri" als "Uri" des "Intent" selbst zurückschicken. – CommonsWare
Aber wenn ich 'takePictureIntent.putExtra angegeben habe (MediaStore.EXTRA_OUTPUT, Uri.fromFile (photoFile)); 'weiß ich nicht schon, wo sich die resultierende Bilddatei in 'onActivityResult()' befindet? Oder ignorieren einige Apps das komplett und legen es wo immer sie wollen? – KaliMa