2015-06-25 4 views
18

Ich bin in der Lage, meine App, die Gerätebesitzer-App durch NFC wie erwähnt here. Jetzt möchte ich meine App über Funk aktualisieren, aber ich konnte keine Methode finden ohne Verwurzelung.OTA-Updates für Gerät Besitzer Android-Anwendung (Kiosk-Modus)

Google bietet viele Optionen für Unternehmen, um Anwendungen wie erwähnt here zu entwickeln, aber nirgendwo bietet eine Möglichkeit, die Anwendung über OTA zu aktualisieren.

Auf der Suche nach einer Lösung.

+0

Evolve (https://github.com/VivekPanyam/Evolve) könnte hilfreich sein –

+0

Ich sah bereits, aber nicht in der Lage, es zu verwenden, auch ist es in der Alpha-Phase, die unsere App abgestürzt sein könnte. Es scheint, den Code zur Laufzeit zu ändern, sieht also etwas kompliziert aus. – Shubham

+0

@Shubham hast du das funktioniert? – Maragues

Antwort

1

Erstellen Sie einen Dienst, um im Hintergrund nach Updates zu suchen. wenn update verfügbar ist, laden sie die apk-datei herunter und schreiben sie auf einige wo wie sdcard. Warten Sie einige Sekunden, bis Sie vollständig bündig geschrieben haben. dann rufe folgenden Code auf, um deine neue apk zu installieren.

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive"); 
startActivity(intent); 

fileName ist Pfad Ihrer neuen apk-Datei auf SD-Karte.

+0

Ich möchte das im Hintergrund tun.Ihre Methode wird nicht die apk stillly.This wird die Installation Benutzeroberfläche öffnen und müssen auch einchecken Einstellung "erlauben Installationen von unbekannten Quellen " – Shubham

1

könnten Sie Play Store verwenden, um Updates für Ihre Anwendung zur Verfügung zu stellen:

  1. Bereitstellung Gerätebesitzer App über NFC, wie Sie bereits getan haben.

  2. Stellen Sie eine aktualisierte Version (gleicher Paketname, gleiche Signatur, höhere Versionsnummer) Ihrer Gerätebesitzer-App im Play Store bereit.

  3. Suchen Sie in der Play Store App auf Ihrem Gerät nach Ihrer Play Store-Version der App und installieren Sie das Update.

  4. Aktivieren Auto-Updates für Ihr Gerät Besitzer App im Play Store (im Play Store-Seite Ihrer App, klicken Sie auf Menü (drei Punkte) und aktivieren Sie das Kontrollkästchen für die automatische Aktualisierung.

Das ist ganz etwas Aufwand für die Bereitstellung Phase, aber das Gerät automatisch zukünftiges Updates erhält

+1

Danke für diese Antwort. Ich dachte an die gleiche Sache, aber das würde ein Google Mail-Konto auf dem Gerät eingerichtet werden müssen, die ich vermied, da die Anwendung für den KIOSK-Modus gedacht ist. – Shubham

4

Dies ist nur reine Spekulation, wie ich noch nie die Paket-Installer-API selbst zu verwenden versucht.

Sie könnten versuchen, ein setzen Installationspaket ge für Ihre Gerätebesitzer-App (mit PackageManager.setInstallerPackageName()). Dieses Installationspaket muss ein separates APK sein, das mit dem gleichen Zertifikat wie das APK des Gerätebesitzers signiert ist.

getPackageManager().setInstallerPackage("<device.owner.package.name>", "<installer.package.name>"); 

Von Ihrem Installateur APK, könnten Sie dann PackageInstaller verwenden, um ein Update vorzubereiten:

PackageInstaller pi = getPackageManager().getPackageInstaller(); 
int sessId = pi.createSession(new PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)); 
PackageInstaller.Session session = pi.openSession(sessId); 
OutputStream out = session.openWrite("app"); 
// .. write updated APK file to out 
session.fsync(out); 
session.commit(...); 
session.close(); 

Ich bin nicht sicher, ob dies leise obwohl das Update installiert (oder ob das funktioniert überhaupt in der wie ich es erwartet hätte).

+0

@Shubham Falls Sie diesen Ansatz versuchen, Ich würde mich sehr über Feedback freuen, wenn das so funktioniert, wie ich es erwartet habe (oder falls es nicht Probleme gibt) –

+0

Ich konnte deine Antwort nicht versuchen, aber habe mehr über Paketinstallation recherchiert und herausgefunden, dass wir es für eine Sitzung tun werden Ich benötige root-Berechtigungen. Ich werde es trotzdem in Kürze versuchen und Ihnen ein Feedback geben. http://stackoverflow.com/questions/26884956/how-to-install-update-remove-apk-using-packageinstaller-class-in-and-and- Roid-l – Shubham

0

Ich denke, Sie möchten möglicherweise eine EMM/MDM-Partner-App werden - sie ähnelt der Gerätebesitzer-App, verfügt jedoch über erweiterte Berechtigungen und APIs. Normalerweise bieten OEMs wie Samsung/HTC den MDM-Partner-Apps versteckte APIs zum Aktualisieren von Apps. Ich bin mir nicht sicher, ob Android for Work auch diese API bereitstellt.

Für zB: OEMs bietet eine API namens updatePackage (String packageName), die vom MDM-Client auf dem Gerät verwendet werden kann, um das Paket zu aktualisieren. Sie können diese API auch zum Aktualisieren der Gerätebesitzer-App verwenden.