2013-02-20 47 views
18

TL: DR; phiên bản;)Tự cập nhật ứng dụng

  • ứng dụng của tôi nên chạy mà không cần tương tác người dùng (tự khởi động vv hoạt động)

  • nó nên cập nhật bản thân (thông qua apk) mà không cần bất kỳ tương tác người dùng

  • thiết bị bắt nguồn từ là có thể

.

vấn đề:

  • truy vấn một gói ứng dụng mới từ một máy chủ hoạt động
  • khi khởi apk với một ý định, "cài đặt ứng dụng" pops nhanh chóng và cần được xác nhận sử dụng
(xem?)

Làm cách nào để giải quyết vấn đề này mà không có bất kỳ tương tác người dùng nào?

http://code.google.com/p/auto-update-apk-client/ Đây có vẻ là giải pháp, nhưng phải có cách tiếp cận tốt hơn.

Tôi đã thấy điều này: Install Application programmatically on Android

nhưng điều đó không giải quyết vấn đề của tôi.

Trả lời

31

Giải quyết nó! : D

Chỉ hoạt động ở các thiết bị bắt nguồn từ nhưng hoạt động hoàn hảo. Sử dụng unix cmd "pm" (packageManager) cho phép bạn cài đặt apks từ sdcard, khi thực thi nó dưới dạng root.

Hy vọng điều này có thể giúp một số người trong tương lai.

public static void installNewApk() 
{ 
     try 
     { 
      Runtime.getRuntime().exec(new String[] {"su", "-c", "pm install -r /mnt/internal/Download/fp.apk"}); 
     } 
     catch (IOException e) 
     { 
      System.out.println(e.toString()); 
      System.out.println("no root"); 
     } 
} 

quyền yêu cầu:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

nó cho tôi mã lỗi 139 tức là lỗi phân đoạn. Nhưng máy tính bảng của tôi đã được root. Bất kỳ ý tưởng tại sao? – jeevs

+0

Bạn có thể cho tôi biết các quyền cần thiết để chạy mã này trên máy tính bảng được root không? – jeevs

+4

Nếu có thể, tôi sẽ upvote 100 lần này! – Ben

5

Đề xuất của tôi là sử dụng cơ chế plugin để cập nhật ứng dụng. Bạn có thể tự động tải các lớp học từ Web và chạy chúng bên trong ứng dụng của bạn mà không cần bất kỳ tương tác người dùng nào. Có rất nhiều tài nguyên trải rộng trên Internet:

How to load a Java class dynamically on android/dalvik?

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

+0

Ý tưởng tốt đẹp, tôi sẽ cung cấp cho nó một thử, nhưng dù sao đi nữa tôi nghĩ rằng việc cập nhật sử dụng một gói ứng dụng sẽ mạnh mẽ hơn và ít bị lỗi. – Thkru

+0

vấn đề chính với điều này là bạn không thể thêm Hoạt động mới với điều này ... – Selvin

+0

điểm tốt, sự lựa chọn phụ thuộc vào nhu cầu rất cụ thể – Zielony

Các vấn đề liên quan