Problem mit startActivityForResult()

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Problem mit startActivityForResult() im Android App Entwicklung im Bereich Betriebssysteme & Apps.
lordzwieback

lordzwieback

Erfahrenes Mitglied
Moin,

folgendes Szenario:
Activity A = MainActivity
Activity B = QRActivity

Im Normalfall funktioniert beides super. Ich habe auf A einen Menüeintrag, welcher einen Intent sendet und B aufruft. Auf B befindet sich ein Button, welcher die Kamera startet, mich ein Bild machen lässt und danach den fotografierten QR Code einliest. Soweit alles prima.

Jetzt wollte ich auf A einen "Shortcut"-Button einrichten, der beim Klick direkt auf die Funktion aus B zugreift, welche die Kamera per Intent öffnet.

Der Code der Methode zum Kamera öffnen und Ergebnis weiterleiten:
Code:
private void takePicture() {
        try {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            File photo = new File(Environment.getExternalStorageDirectory() + "/Pfad/", "qrscan.jpg");
            imageUri = FileProvider.getUriForFile(context, "com.user.provider", photo);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
            startActivityForResult(intent, PHOTO_REQUEST);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Dieser Code funktioniert super, solange ich ihn von B aus ausführe. Sobald ich versuche, ihn von A mit Hilfe von ...
Code:
public void shortcutMethod() {
        takePicture();
    }
... auszuführen, erhalte ich folgende Fehlermeldung:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference

Mit Verweis auf folgende Zeile aus takePicture():
Code:
startActivityForResult(intent, PHOTO_REQUEST);
Ich hab mich schon nach einer Lösung umgeschaut, aber ich komme nicht drauf, was hier verkehrt ist. Ich meine... natürlich sehe ich, dass er anmeckert, dass ich hier irgendwo auf ein Objekt zugreife, dass null ist. Vielleicht bin ich auch nur blind/doof oder beides. Kann mir jemand auf die Sprünge helfen? Stehe aufm Schlauch...

Ich rufe die "shortcut" Methode aus B in A folgendermaßen auf:
Code:
QRActivity qrActivity = new QRActivity(MainActivity.this);
qrActivity.shortcutMethod();
 
Jaiel

Jaiel

Experte
Wird startActivityForResult() aufgerufen befor die onCreate Methode deiner Activity ausgeführt wurde?

Was anderes fällt mir nicht ein was an dieser Stelle zu einer NPE führt
 
lordzwieback

lordzwieback

Erfahrenes Mitglied
Ach Mist, vergessen hier zu schreiben, dass ich das Problem mehr oder minder gefunden hatte.

Jaiel hatte recht, ich habe an dieser Stelle in meiner App eine Funktion einer Activity außerhalb dieser aufgerufen. Diese Funktion war abhängig vom ActivityResult und da die Activity nicht gestartet wurde, bekam ich die NPE.
Trotzdem danke für den Tipp, Jaiel. :)
 
Ähnliche Themen - Problem mit startActivityForResult() Antworten Datum
1
3