2012-01-28 33 views
7

Olası Çoğalt:
Android: install .apk programmaticallyAndroid uygulama kendisini güncellemesi

benim android uygulamasını güncellemeniz gerekir. Dahili olarak programın yeni sürümünü indirdim. Güncel sürümü indirilen (programlı olarak) mevcut sürümü nasıl değiştirebilirim?

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 

cevap

11

güncellenmiş apk aynı paket adı var ve sadece bir varsayılan android yükleyici arayacak bir niyeti gönderebilir aynı anahtarla imzalanması halinde. Yüklenen apk geçersiz kılınacaktır.

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

Merhaba @lexmiir, cevabınız için teşekkürler, söylediklerinizi yapıyorum ve şimdi Ayrıştırıcı Hatası - Paketin ayrıştırılması sorunu var. Herhangi bir ipucu? :-) – nonickh

+0

Merhaba @nonickh, her ikisini de aynı anahtarla imzaladın mı? Bu hata, aynı paket ismine sahip uygulamalar farklı anahtarlarla – lexmiir

+0

Hi @lexmiir ile imzalandığında, gecikme için özür dilerim, iki dosyayı karşılaştırdım ve büyük olasılıkla, muhtemelen siteyi kopyalama işleminin neden olduğu farklı olabilir. Bu sorunu çözmek için, desteğiniz için müteşekkir – nonickh