2012-01-28 16 views
7

Powiel możliwe:
Android: install .apk programmaticallyAndroid self-aktualizacja

muszę zaktualizować Androida. Wewnętrznie program, pobierz nową wersję. Jak mogę zastąpić obecną wersję tym, która nowa została pobrana (programowo)?

URL url = new URL("http://www.mySite.com/myFolder/myApp.apk"); 
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 
try 
{ 
    FileOutputStream fos = this.getApplicationContext().openFileOutput("myApp.apk", Context.MODE_WORLD_READABLE|Context.MODE_WORLD_WRITEABLE); 

    InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); 

    StringBuilder sb = new StringBuilder(); 

    byte[] buffer = new byte[8192]; 
    int len; 
    while ((len = in.read(buffer)) != -1) 
    { 
     // EDIT - only write the bytes that have been written to 
     // the buffer, not the whole buffer 
     fos.write(buffer, 0, len); // file to save app 
    } 
    fos.close(); 

    ....  here I have the file of new app, now I need use it 

Odpowiedz

11

Jeśli aktualizowany apk ma taką samą nazwę pakietu i jest podpisana z tym samym kluczem można po prostu wysłać intencję, która będzie zadzwonić do instalatora domyślna Android. Zainstalowany apk zostanie zastąpiony.

+0

Witam @lexmiir, dziękuję za odpowiedź, robię to, co powiedziałeś, a teraz mam okno dialogowe z ostrzeżeniem mówiącym o błędzie Parsera - Wystąpił problem z parsowaniem paczki. Jakieś wskazówki? :-) – nonickh

+0

Hi @nonickh, czy podpisałeś oba apki z tym samym kluczem? Ten błąd może pojawić się, gdy aplikacje o tej samej nazwie pakietu są podpisane za pomocą różnych kluczy – lexmiir

+0

Hi @lexmiir, Przepraszam za opóźnienie, porównałem dwa pliki i są one różne, prawdopodobnie spowodowane przez proces kopiowania strony, najpierw próbuję aby rozwiązać ten problem, wdzięczny za twoje wsparcie – nonickh

Powiązane problemy