Was ist der zuverlässigste Weg, die ACTION_IMAGE_CATPURE-Absicht für Android zu tun? Ich habe mehrere Dinge ausprobiert, die ich online gefunden habe, und keiner von ihnen funktioniert auf jedem Gerät. Meine Testgeräte sind ein Nexus 6 (Android 6.0.1) und ein Lenovo Telefon (4.4.2).Zuverlässige Möglichkeit, eine ACTION_IMAGE_CAPTURE Absicht zu machen?
Ich habe versucht, den folgenden (entfernt redundanten Code wie Berechtigungen - diese eindeutig richtig funktionieren):
Eine Option (funktioniert nur auf dem Nexus 6)
final File root = new File(Environment.getExternalStorageDirectory() + File.separator + "MyDir" + File.separator);
root.mkdirs();
final String fname = "img_" + System.currentTimeMillis() + ".jpg";
outputFileUri = Uri.fromFile(new File(root, fname));
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePhotoIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri);
try {
startActivityForResult(takePhotoIntent, 1);
} catch (SecurityException e) { }
// ....
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println(new File(outputFileUri.toString()).exists()));
// This prints false on Kitkat, but true on 6.0
Option B (nicht auf entweder arbeiten, aber es scheint, dass es sollte auf beide arbeiten)
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = takePhotoIntent.getData();
// start intent
// .....
public void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println(new File(outputFileUri.toString()).exists()));
// This prints false on everything
Es scheint wie dort sollte eine zuverlässige Möglichkeit sein, dies über Android-Versionen zu tun, aber ich habe auf Stack-Überlauf für die letzte Stunde gewesen und es gibt 10 + Lösungen, die ich ausprobiert habe, und keiner von ihnen auf dem älteren arbeiten Version von Android.
Wie bekomme ich den Uri zuverlässig aus der ACTION_IMAGE_CAPTURE Absicht?
show your logcat whats system sagt? –
Das Protokoll ist voller Zufälligkeit - was soll ich suchen? Vor der Druckanweisung wurden keine Fehler ausgegeben. Ich meine, ich könnte es kopieren/einfügen, aber es werden ungefähr 500 Zeilen sein, ohne zu wissen, wonach ich suchen soll. – CaptainForge
@SohailZahid Wenn Sie das System.out oben gemeint haben, wird nur falsch wie beschrieben gedruckt. – CaptainForge