Meine Android-Anwendung hat eine Option auf die neuere Version zu aktualisieren, die neuere Version APK Ich halte es unter einem Pfad in SD-Karte verfügbar. Beim Klicken auf Upgrade Option rufe ich folgende Methode auf.
%Vor%Der Grund, warum ich FLAG_ACTIVITY_NEW_TASK einbeziehe, liegt darin, dass ich nach der Aktualisierung "Open" & amp; "Done" -Optionen, die nicht angezeigt werden, wenn ich dieses Flag nicht verwende.
Wenn der obige Code das Paketinstallationsprogramm startet, hat er zwei Optionen OK & amp; Abbrechen, wenn der Benutzer auf Abbrechen klickt, möchte ich wissen, dass der Benutzer den Vorgang abgebrochen hat. Aber ich kann es nicht wissen, weil das onActivityResult vorzeitig heißt. Ich komme zu einem Grund, warum passiert das nach dem Lesen der folgenden Beiträge.
Android - startActivityForResult löst sofort onActivityResult aus
onActivityResult () vorzeitig aufgerufen
Sie bitten mich sicherzustellen, dass die Absicht, die ich zum Starten der Aktivität verwende, nicht FLAG_ACTIVITY_NEW_TASK hat. Siehe hier:
Besonders zu beachten: "Dieses Flag kann nicht verwendet werden, wenn der Anrufer ist Anforderung eines Ergebnisses aus der gestarteten Aktivität. "
Wenn die Aktivität als Teil einer neuen Aufgabe gestartet wird, dann Android ruft sofort die onActivityResult () mit RESULT_CANCELED auf weil eine Aktivität in einer Aufgabe keine Ergebnisse an eine andere Aufgabe zurückgeben kann, Nur Aktivitäten in derselben Aufgabe können dies tun.
Aber in meinem Fall kann ich FLAG_ACTIVITY_NEW_TASK nicht entfernen, weil ich sonst keine "Open" - und "Done" -Optionen beim erfolgreichen Upgrade bekomme.
Hat jemand mit ähnlichen Problemen konfrontiert? Bitte helfen Sie mir, wie es mich verrückt macht.
Sie sollten Paket hinzugefügt Broadcast Intent verwenden. Erstellen Sie einen Broadcast-Empfänger, hören Sie das Paket hinzugefügt. Wenn das hinzugefügte Paket Ihrem Paket entspricht, bestätigen Sie den Installationsvorgang, andernfalls den Installationsprozess abweisen. Wenn Sie fragen, welche Art von Extras von Android zurückgegeben werden kann, gibt Android EXTRA_UID über Paket zurück. Die Methode von PackageManager konvertiert uid in ein Paket. (GetPackagesForUid (int uid) gibt ein String-Array zurück, aber normalerweise gibt es ein Element im Array zurück. Normalerweise ist die Array-Länge gleich 1).
Tags und Links android android-intent android-install-apk android-launcher