lordzwieback
Erfahrenes Mitglied
- 210
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:
Dieser Code funktioniert super, solange ich ihn von B aus ausführe. Sobald ich versuche, ihn von A mit Hilfe von ...
... 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():
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:
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();
}
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();