9

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. Beim Klick auf Upgrade Option rufe ich folgende Methode auf.Installationsprogramm für Android-Pakete - Wie bekomme ich "Open" und "Done"?

public static void launchInstaller(Activity act, String apkPath) 
    { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File(apkPath)), "application/vnd.android.package-archive"); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     act.startActivityForResult(intent, 0); 
    } 

Der Grund, warum ich FLAG_ACTIVITY_NEW_TASK sind, liegt daran, dass nach upgradation, ich will „Open“ & „Fertig“, Optionen haben, die nicht, wenn ich dieses Flag nicht verwenden gezeigt.

Wenn der obige Code das Paketinstallationsprogramm startet, hat es zwei Optionen OK & Abbrechen, wenn Benutzer Abbrechen drücken, 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 immediately triggering onActivityResult

onActivityResult() called prematurely

Sie fragen mich, um sicherzustellen, dass die Absicht ich die Aktivität zu starten, bin mit auf sie nicht haben FLAG_ACTIVITY_NEW_TASK gesetzt. Siehe hier:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK

Insbesondere Hinweis: „Dieses Flag kann nicht verwendet werden, wenn der Anrufer ein Ergebnis aus der Tätigkeit anfordernden ins Leben gerufen.“

Wenn die Aktivität als Teil einer neuen Aufgabe wird dann Android gestartet sofort die onActivityResult() aufrufen, mit RESULT_CANCELED weil eine Tätigkeit in einer Aufgabe kann nicht Ergebnisse zurück an eine andere Aufgabe, nur auf ein und demselben Aufgabe kann dies tun.

Aber in meinem Fall kann ich FLAG_ACTIVITY_NEW_TASK nicht entfernen, weil ich ansonsten nicht die Optionen "Öffnen" und "Fertig" beim erfolgreichen Upgrade erhalten kann.

Hat jemand mit ähnlichen Problemen konfrontiert? Bitte hilf mir, denn es macht mich verrückt.

+0

Ich habe das gleiche Problem ... hast du irgendwelche bekommen Auflösung dafür? – Himanshu

Antwort

3

Sie sollten Paket hinzugefügt Broadcast Intent verwenden. Erstellen Sie einen Broadcast-Empfänger hören package added. Wenn hinzugefügt Paket entspricht Ihr Paket, Benutzer bestätigen, Installation sonst entlassen Installationsprozess. 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.

)
Verwandte Themen