Null-Zeiger-Ausnahme in Kamera-Absicht, wenn ich eine Drittanbieter-Kamera-Anwendung auswähle

8

Mein Problem ist, dass jedes Mal, wenn ich die Kamera-Anwendung von Drittanbietern z. B. Beauty Plus Camera auswähle, jedes Mal eine Nullzeiger-Ausnahme auslöst, funktioniert mein Code vollständig für Standard-Kameraanwendungen Kamera für Moto-Serie-Handys gemacht.

Der erste Dialog zum Auswählen der Option für Galerie oder Kamera ist hier:

%Vor%

Dies ist OnActivityResult () Methode:

%Vor%

Dieser obige Code ist eine Anmerkung für einige Anwendungen von Drittanbietern, wie ich bereits erwähnt habe. Ich erhalte NullPointerException in dieser Zeile:   Bitmap-Foto = (Bitmap) data.getExtras (). get ("Daten");

    
TapanHP 24.06.2016, 09:48
quelle

3 Antworten

2

Wenn Sie Apps von Drittanbietern nutzen möchten, wird es keine perfekte Lösung geben, da sie nicht demselben Vertrag wie die Standard-Android-Kamera-App folgen müssen. Aber Sie können wahrscheinlich bessere Ergebnisse erzielen als jetzt.

Die Standard-Kamera-App erfüllt diesen Auftrag:

  1. Es gibt ein Thumbnail in intent.getExtras.get("data") zurück
  2. Wenn Sie ein Uri mit intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) angeben, wird das Bild in voller Größe an diesem Speicherort gespeichert.

(Wichtige Details finden Sie im Schulungsartikel .)

Obwohl die spezielle Kamera-App von Drittanbietern, die Sie ausprobiert haben, Teil 1 des Vertrags nicht erfüllt, haben Sie möglicherweise mehr Glück mit Teil 2.

Wenn Sie das Bild in voller Größe verwenden, ist es nicht schwer, das Thumbnail zu erstellen, das Sie offensichtlich benötigen, zum Beispiel mit Antworten hier auf Stack Overflow.

    
x-code 05.09.2016, 02:33
quelle
1

Schauen Sie in diese Datei: Ссылка

Versuchen Sie Folgendes:

%Vor%

welche Datei zurückgeben.

    
SANAT 01.09.2016 13:33
quelle
1

Dies ist ein Problem bei der Verwendung externer Apps, um die Funktionalität für Sie zu übernehmen. Theoretisch sollten Apps, die Intent actions akzeptieren, die Intent richtig behandeln und die gewünschten Daten zurückgeben. In der Praxis kann jedoch nur sehr wenig getan werden, um dieses Verhalten zu erzwingen ... Zum Beispiel kann jede App sagen Es handhabt "Bilderfassung", aber wenn Sie Ihre Intent an eine schlecht programmierte oder bösartige App weitergeben, gibt es nichts, was diese App daran hindert, etwas völlig anderes als das zu tun, was Sie beabsichtigt haben, oder gar nichts. Wenn Sie festlegen, dass Ihre App die Kontrolle über eine andere App verliert, um bestimmte Funktionen zu erfüllen, gehen Sie das Risiko ein, dass die gewählte App diese Funktionalität nicht erfüllen kann.

Es gibt wirklich sehr wenige Möglichkeiten, immer sicherzustellen , dass Ihre App ein Bild aufnehmen soll, wie Sie es möchten:

  • Erstellen Sie eine Auswahl für Ihre Kamera Intent und beschränken Sie die Ergebnisse auf nur Apps, die Sie getestet haben und wissen, dass sie wie vorgesehen funktionieren. Wenn die Apps nicht installiert sind, deaktivieren Sie die Bildaufnahmefunktion.
  • Implementieren Sie die Bilderfassung selbst.
happydude 04.09.2016 17:28
quelle