Die Android-Kameraaktivität kehrt nicht zu meiner App zurück, wenn die OK-Taste gedrückt wird

8

Ich habe eine App, die funktioniert. Es hat nur ein Problem mit meiner Kamera Absicht oder Berechtigungen.

Die App soll die Kameraaktivität starten, wenn der Benutzer eine Taste drückt. Das funktioniert einwandfrei, aber wenn der Benutzer ein Bild annimmt, indem er auf die Schaltfläche OK auf der Kamera klickt, wird er nicht in meiner App angezeigt. Wenn sie die Abbrechen-Taste an der Kamera drücken, kommt sie wie erwartet zu meiner App zurück.

Ich habe alle ähnlichen Fragen gelesen, die ich hier finden kann, aber keine von ihnen hat mein Problem gelöst. Ich muss der Kamera genau sagen, wo das Bild gespeichert werden soll, weil ich in meiner App zwischen 2 wechseln möchte. Hier ist der Code, der den Camera Intent erstellt und ihn startet:

%Vor%

Ich habe mehrere Werte für imagePath versucht (was ein String ist), aber die OK-Taste der Kamera hat mit keinem von ihnen funktioniert. Dies sind die Pfade, die ich ausprobiert habe:

%Vor%

Ich habe die folgenden Berechtigungen in meiner Manifestdatei:

%Vor%

Können Sie mir helfen, herauszufinden, was mit meinem Code nicht stimmt, oder mir sagen, wie ein gültiger Pfad sein könnte? Ich bevorzuge es, wenn das Bild an einem Speicherort im Cache gespeichert wird, da es nicht wichtig ist, dass das Bild nach dem Verlassen der Anwendung weiterhin existiert, aber es ist mir egal, wer Zugriff auf das Bild hat.

Ich mache alle Tests auf dem 4.1 Emulator, kompiliere mit dem 4.1 SDK, und meine Mindestversion ist API 8 (2.2).

Ich habe die Absicht in onActivityResult() dargelegt, aber ich glaube nicht, dass ihr diesen Code sehen solltet, weil er das Problem nicht beeinflussen sollte.

    
cmasupra 10.10.2012, 04:54
quelle

2 Antworten

2

Ich war in der Lage, das Problem herauszufinden. Es scheint, dass Sie Uri.parse(imagePath) nicht verwenden müssen, sondern Uri.fromFile(new File(imagePath)) , wenn Sie das Extra hinzufügen. Ich habe den neuen Intent-Code unten für den Fall verwendet, dass er jedem hilft, der das gleiche Problem hat.

%Vor%

Ich verwende jetzt erfolgreich context.getExternalCacheDir() , um den vollständigen Pfad imagePath zu erstellen. Der resultierende Pfad, den ich erstellt habe, ist /mnt/sdcard/Android/data/<appPkg>/cache/<appName>/cameraImages/image1.jpg .

    
cmasupra 11.10.2012, 16:28
quelle
1

Das Problem besteht darin, dass Sie Ihre lokale (anwendungsinterne) Datei für die Kameraaktivität freigeben müssen. Das Erstellen eines Inhaltsanbieters für diesen Effekt ist das EINZIGE, was für mich funktioniert hat. Siehe die zweite Option hier: Ссылка

    
Mike6679 30.07.2015 13:56
quelle

Tags und Links