Ich möchte ein Bild von der Kamera aufnehmen und im Cache-Verzeichnis der privaten Anwendung speichern. Mir ist klar, dass ich der Kamera-App die Erlaubnis geben muss, in mein privates Verzeichnis zu schreiben, also habe ich die FLAG_GRANT_WRITE_URI_PERMISSION
-Flagge hinzugefügt.Bild von der Kamera in das Cache-Verzeichnis der privaten Anwendung speichern
Was passiert ist, dass die Kamera App öffnet, kann ich das Bild machen, aber wenn ich auf die OK-Taste klicke, passiert nichts. Die Kamera-App bleibt geöffnet. Keine Protokollausgabe Ich vermute es liegt an einem Berechtigungsproblem.
private void getCameraImage() {
try {
mTmpFile = File.createTempFile("tmp", ".jpg", getCacheDir());
Uri imgUri = Uri.fromFile(mTmpFile);
Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, imgUri);
i.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// i.setData(imgUri); // if uncommented, i get an ActivityNotFound Exception
startActivityForResult(i, REQUEST_CAMERA);
} catch (IOException e) {
Log.e(TAG, "getCameraImage()", e);
Toast.makeText(this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
Irgendwelche Erkenntnisse, wie ich das korrigieren könnte?
Edit:
Wenn ich das Verzeichnis der Öffentlichkeit SD-Karte zu ändern, dann funktioniert es gut.
mTmpFile = File.createTempFile("tmp", ".jpg", Environment.getExternalStorageDirectory());
Dank Simon
Wenn es sich um ein Berechtigungsproblem handelt, wird im LogCat ein Fehler angezeigt. – PearsonArtPhoto
Ich bin mir nicht sicher. Selbst wenn ich das Flag FLAG_GRANT_WRITE_URI_PERMISSION entferne, erhalte ich keine Protokollausgabe. Vielleicht überprüft die Kamera-App die Berechtigung und bricht die Aktion ab, wenn sie die Datei nicht schreiben kann. – SimonSays