2012-01-28 30 views
7

thể trùng lặp:
Android: install .apk programmaticallyứng dụng Android tự động cập nhật

Tôi cần cập nhật ứng dụng Android của tôi. Trong nội bộ chương trình, tôi tải về phiên bản mới. Làm cách nào để thay thế phiên bản hiện tại bằng phiên bản mới được tải xuống (lập trình)?

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 

Trả lời

11

Nếu APK đã cập nhật có cùng tên gói và được ký bằng cùng một khóa, bạn có thể gửi ý định gọi trình cài đặt Android mặc định. Gói ứng dụng đã cài đặt sẽ bị ghi đè.

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

Hi @lexmiir, cảm ơn bạn đã trả lời, tôi làm những gì bạn nói và bây giờ tôi nhận được hộp thoại cảnh báo cho biết Lỗi phân tích cú pháp - Đã xảy ra sự cố khi phân tích cú pháp gói. Bất kì manh mối nào? :-) – nonickh

+0

Xin chào @nonickh, bạn đã ký cả hai apk với cùng một khóa chưa? Lỗi này có thể xuất hiện khi các ứng dụng có cùng tên gói được ký với các khóa khác nhau – lexmiir

+0

Hi @lexmiir, Xin lỗi vì sự chậm trễ, tôi so sánh hai tệp và chúng khác nhau, có thể do quá trình sao chép trang web, lần đầu tiên tôi thử để giải quyết vấn đề này, biết ơn sự hỗ trợ của bạn – nonickh