Wir haben eine App mit einer Aktivität, die auf zwei Arten gestartet werden kann:
Soweit ich sehen kann, funktioniert das immer gut. Wir erhalten entweder Intent.ACTION_VIEW
mit einem Daten-URI, oder wir erhalten einige String-Extras.
Wir haben jedoch sehr wenige Fälle, in denen die Aktion Intent.ACTION_MAIN
ist und keine zusätzlichen Daten vorhanden sind.
Der toString()
der Absicht ist wie folgt (Klassenname geändert):
Intent.getExtras()
gibt null zurück, Intent.getDataString()
gibt null zurück.
In welchen Fällen kann das passieren? Warum ist die Kategorie für die Aktivität Intent.CATEGORY_LAUNCHER
? Wie können wir die Daten erhalten, die benötigt werden, um dem Benutzer den richtigen Inhalt zu zeigen?
launchMode
ist für die Aktivität nicht angegeben. Der einzige IntentFilter
in AndroidManifest.xml
ist für die Tiefenverknüpfung (und nicht die Launcher-Kategorie).
Das Problem tritt bei Android 4-6 auf einer Vielzahl von Geräten auf.
Bearbeiten: Vergessen, die Flaggen zu erwähnen:
Wie der Ausdruck sagt, sind die Flags für die Absicht FLAG_ACTIVITY_NEW_TASK
und FLAG_ACTIVITY_BROUGHT_TO_FRONT
. Ich denke, das könnte hier relevant sein.
Ich glaube, ich habe es genagelt:
Es gibt Launcher wie Nova Launcher , die es Benutzern erlaubt, mit any der App Activities
anstelle des normalen Flusses zu beginnen:
Zum Beispiel können Sie eine Verknüpfung auf Ihrem Desktop hinzufügen, um den Google Mail-Client mit der Kontoeinrichtung zu starten.
Und in diesem Fall wird die Aktivität mit leerem Extras
gestartet und technisch wird sie zum% code% des Startprogramms.
Nun, da AndroidManifest.xml vom Build-System manipuliert wird, passiert es oft, dass Bibliotheken, die Sie einschließen, auch Dinge zum Manifest hinzufügen, von denen ich vermute, dass sie hier vorkommen.
Obwohl Sie im Manifest angegeben haben, dass nur ein IntentFilter vorhanden ist, haben Sie tatsächlich die installierte App überprüft, um zu sehen, was das Manifest aussagt (anstatt sich auf das zu verlassen, was Sie in Ihren Quellcode stecken)?
Im Play Store sind verschiedene Apps verfügbar, um das Manifest einer installierten App anzuzeigen - einschließlich App Detective (das ich geschrieben habe).
Tags und Links android android-intent