Aktualisierung des Android-Anwendungsproblems

8

Vor kurzem habe ich das Problem mit meinem Android App Update-Prozess konfrontiert.

Kurz gesagt, die App kann prüfen, ob ein Update mit einem höheren Versionscode auf den Server hochgeladen wurde. Wenn dies der Fall ist, entscheidet der Benutzer, ob er aktualisieren soll. Danach wird die App geladen und die Standardinstallation beginnt:

%Vor%

Das Problem ist, dass, wenn Android Intent die Installation beendet, "theoretisch" Aktivität mit Informationen "Anwendung wurde installiert" und 2 Tasten "Fertig", "Öffnen". Ich habe "theoretisch" geschrieben, weil ich bisher auf folgende Szenarien gestoßen bin:

  1. Die App ist installiert, die Aktivität mit der Nachricht "Anwendung wurde installiert" wird angezeigt, der Benutzer klickt auf "Öffnen", aber nichts passiert (Android 2.3. *) oder App öffnet sich tatsächlich korrekt - dieses Verhalten ist zufällig.

  2. Die App ist installiert, die Aktivität mit der Nachricht "Anwendung wurde installiert" wird angezeigt, verschwindet aber plötzlich.

Um diesen Fehler zu umgehen (?) habe ich Ссылка gefunden. BroadcastReceiver, den ich implementiert habe, startete die Launch Activity und wir sagen, es war irgendwie eine richtige Lösung.

%Vor%

Diese Lösung musste geändert werden, da Anwendungen mit niedrigerer API (niedriger als 12) ACTION_MY_PACKAGE_REPLACED nicht verarbeiten konnten. Daher implementierte ich API-abhängiges Verhalten, das:

  • erlaubt die normale Installation der udpate App und startet die App von Activity mit der Schaltfläche "Done" / "Open" (API & lt; 12)

  • gestartet Update-App über MyReceiver nach ACTION_MY_PACKAGE_REPLACED noting.

Dies ist meine aktuelle Lösung.

Meine Fragen sind:

  • warum aktualisierte App nach dem Klicken auf "Öffnen" nach der Installation in Android mit API unter 12 zufällig geöffnet?

  • Warum verschwindet die Aktivität mit den Schaltflächen "Fertig" / "Öffnen" auf Geräten mit einer höheren API?

Ich habe versucht, die Anwendung vor der Installation zu beenden, aber es hat nicht geholfen.

Meine Erklärung ist, dass nach dem Installationsprozess ein neues Paket das alte überschreiben muss, so dass das alte Paket einfach entfernt werden muss und dies der Hauptgrund für das Verschwinden der Startaktivität ist.

Wie ich geschrieben habe, ist dies meine derzeitige Lösung und ich bin nicht zufrieden. Wenn jemand die Angelegenheit klären könnte, wäre ich sehr dankbar.

Danke fürs Lesen.

Bearbeiten:

Ok, Lösung ist sehr einfach: Um erfolgreich zu aktualisieren, müssen Sie die Absicht als neue Aufgabe starten (arrrgh ...):

%Vor%     
dawid gdanski 23.07.2013, 23:45
quelle

1 Antwort

0

Fügen Sie "Manifest-Filter" zuerst bei Manifest wie folgt hinzu:

%Vor%

Setzen Sie dann Ihre Absichts-Flags für neue Aufgabe:

intentAPK.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    
Andrew.T 07.07.2015 04:10
quelle