2015-06-25 25 views
18

Jestem w stanie udostępnić moją aplikację, aplikację właściciela urządzenia za pośrednictwem NFC, zgodnie z informacją here. Teraz chcę zaktualizować moją aplikację bezprzewodowo, ale nie mogłem znaleźć metody bez korzeni.Aktualizacje OTA dla właściciela urządzenia Aplikacja Android (tryb kiosku)

Google zapewnia przedsiębiorstwom wiele możliwości opracowywania aplikacji, o których wspomniano pod numerami here, ale nigdzie nie ma sposobu na zaktualizowanie aplikacji za pośrednictwem OTA.

Szukasz rozwiązania.

+0

Evolve (https://github.com/VivekPanyam/Evolve) może być pomocne –

+0

Już to widziałem, ale nie mogłem go użyć, również jest w fazie alfa, co może spowodować awarię naszej aplikacji. Wydaje się, że zmienia kod w czasie wykonywania, więc wygląda na nieco skomplikowany. – Shubham

+0

@Shubham czy to działa? – Maragues

Odpowiedz

1

Utwórz usługę sprawdzania w tle aktualizacji. jeśli aktualizacja jest dostępna pobierz plik apk i zapisz go w jakimś miejscu, takim jak sdcard. poczekaj kilka sekund, aby napisać do końca. następnie wywołaj następujący kod, aby zainstalować nowy apk.

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

fileName jest ścieżka do nowego pliku apk na karty SD.

+0

Chcę to zrobić po cichu.Twoja metoda nie będzie cicho instalować apk.To spowoduje otwarcie interfejsu instalacyjnego, a także będzie musiało sprawdzić ustawienie "zezwalaj na instalacje z nieznanych źródeł " – Shubham

1

Można użyć Sklep Play, aby zapewnić aktualizacje dla aplikacji:

  1. Provision właściciel urządzenia poprzez aplikację NFC, tak jak już to zrobił.

  2. Podaj zaktualizowaną wersję (ta sama nazwa pakietu, ten sam podpis, wyższy numer wersji) aplikacji właściciela urządzenia w Sklepie Play.

  3. W aplikacji Sklep Play na urządzeniu wyszukaj swoją wersję aplikacji Sklep Play i zainstaluj aktualizację.

  4. uaktywnić automatyczne aktualizacje dla aplikacji właściciela urządzenia w Sklepie Play (na stronie Sklepu Play w aplikacji, kliknij menu (trzy kropki) i włączyć opcję auto-aktualizacji.

to sporo wysiłku w fazie tworzenia rezerw, ale urządzenie powinno w przyszłości otrzymywać aktualizacje automatycznie

+1

Dziękuję za tę odpowiedź. Pomyślałem o tym samym, ale to wymagałoby skonfigurowania konta Gmail na urządzeniu, którego unikałem, ponieważ aplikacja jest przeznaczona dla trybu KIOSK – Shubham

4

to jest po prostu czysta spekulacja, jak nigdy nie próbowałem użyć API pakietu Instalatora siebie.

można spróbować ustawić instalator packa ge dla aplikacji właściciela urządzenia (przy użyciu PackageManager.setInstallerPackageName()). Ten pakiet instalatora musiałby być oddzielnym pakietem APK podpisanym z tym samym certyfikatem, co plik APK właściciela urządzenia.

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

ze swojego instalatora APK, można następnie wykorzystać PackageInstaller przygotować aktualizacji:

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(); 

Nie jestem pewien, czy to po cichu instaluje aktualizację chociaż (lub jeśli to w ogóle działa w sposób, jaki bym się spodziewał).

+0

@Shubham Jeśli spróbujesz tego podejścia, Byłbym bardzo szczęśliwy, gdyby otrzymałem informację zwrotną, jeśli to działa tak, jak się spodziewałem (lub jeśli nie to, jakie problemy wystąpiły) –

+0

Nie mogłem przetestować twojej odpowiedzi, ale wykonałem więcej badań dotyczących Instalatora pakietów i dowiedziałem się, że do wykonania sesji będziemy Potrzebuję uprawnień root'a, ale spróbuję tego wkrótce i udzielę informacji zwrotnej. http://stackoverflow.com/questions/26884956/how-to-install-update-remove-apk-using-packageinstaller-class-in-and roid-l – Shubham

0

Chyba chcesz zostać aplikacją partnerską EMM/MDM - jest ona podobna do aplikacji właściciela urządzenia, ale ma rozszerzone uprawnienia i interfejsy API. Zwykle producenci OEM, tacy jak Samsung/HTC, udostępniają ukryte interfejsy API aplikacjom partnerskim MDM w celu aktualizacji aplikacji. Nie jestem pewien, czy Android for Work zapewnia również ten interfejs API.

Na przykład: Producenci OEM oferują pakiet APP o nazwie updatePackage (String nazwa pakietu), który może być użyty przez klienta MDM na urządzeniu do aktualizacji pakietu.Możesz użyć tego interfejsu API do aktualizacji aplikacji Właściciel urządzenia.