Lưu ý :
Giải pháp sau:
- được thử nghiệm trên Android 4.2.1, COS12 (Android 5.0.2) và CM12.1 (Android 5.1.1) - tất cả đều chạy Play Store v6.0.5 1
- yêu cầu Android đã root
- đây là một bản demo ngắn của giải pháp
Trong khi duyệt qua bảng kê khai của Play Store, tôi đã đoán được rằng chỉ có dịch vụ sau mới có khả năng là người khởi tạo tự động cập nhật ứng dụng qua Wi-Fi.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
Tôi đã chơi với dịch vụ đó trong một số điều kiện trên các thiết bị khác nhau và thấy nó hữu ích cho mục tiêu đang đề cập. Không cần phải nói rằng cài đặt tự động cập nhật ứng dụng nên được đặt thành "Tự động cập nhật ứng dụng chỉ qua Wi-Fi" trong Play Store.
Dưới đây là những gì bạn có thể làm: Cài đặt ứng dụng tự động hóa có thể thực hiện một loạt các hành động khi nguồn điện và Wi-Fi được kết nối và sau đó, bị ngắt kết nối. Tôi đã sử dụng Tasker ( phiên bản dùng thử ; userguide ) làm ứng dụng tự động hóa.
Chúng ta sẽ cần hai nhiệm vụ: một nhiệm vụ nhập cảnh và một nhiệm vụ thoát. Xem câu trả lời của tôi ở đây để được giúp đỡ liên quan.
Nhập tác vụ : (Hành động):
Mã → Chạy Shell
- Bạn có thể tùy chọn thêm một hoặc nhiều hành động để thông báo cho mình rằng quy trình cập nhật đã bắt đầu. Tôi đã sử dụng Thông báo → Flash để thông báo cho mình qua bánh mì nướng.
Nhiệm vụ thoát : (Hành động):
Nhiệm vụ này yêu cầu các applet của Busybox được cài đặt. Xem Làm cách nào để cài đặt các công cụ dòng lệnh bị thiếu trên thiết bị Android? để được giúp đỡ liên quan.
Mạng → Kiểm tra mạng
- Loại: Dữ liệu di động được bật
- Kết quả lưu trữ trong:
%Mdata
Mã → Chạy Shell
- Một lần nữa, để thông báo cho chính mình, sử dụng bất kỳ hành động nào bạn chọn.
Những nhiệm vụ đó làm gì?
Khi các điều kiện cho cả hai bối cảnh được đáp ứng, tác vụ enter được chạy. Các lệnh trong tác vụ đó thực hiện những điều này theo thứ tự tuần tự:
- cho phép dịch vụ của Play Store nói trên
- buộc dừng cửa hàng Play
- bắt đầu dịch vụ của Play Store
Và đó là tất cả để cập nhật tự động bắt đầu.
Sau khi được kích hoạt, bất cứ khi nào cấu hình tắt (đơn giản vì một điều kiện cho bối cảnh không gặp nữa), tác vụ thoát sẽ chạy. Nhiệm vụ thoát đó thực hiện các bước sau theo thứ tự tuần tự:
- lưu trữ trạng thái (bật / tắt) dữ liệu di động trong một biến Mdata
công việc của những lệnh đó là:
- vô hiệu hóa dữ liệu di động
- tắt Wi-Fi
- buộc dừng cửa hàng Play
- buộc dừng tải xuống Trình quản lý
Tôi nhận thấy rằng nếu một bản cập nhật (tải về cơ bản dở dang) cho một ứng dụng bị gián đoạn do không huy động đủ Wi-Fi, thanh tiến trình (thông báo) được miễn nhiệm, tình trạng của tiến bộ được lưu trữ trong một hàng trong bảng tải của cơ sở dữ liệu tải .db . (Cơ sở dữ liệu đó nằm trong thư mục dữ liệu của Trình quản lý tải xuống.) Hàng đó cũng chứa vị trí của tệp được tải xuống một phần.
Để đảm bảo rằng cập nhật tự động không xảy ra trên kết nối thành công tiếp theo với Wi-Fi và đảm bảo rằng nó không bao giờ làm như vậy khi cấu hình không chạy tác vụ enter, sau đây là các lệnh còn lại làm gì:
- trích xuất vị trí của tệp được tải xuống một phần từ giá trị trong cột
_data
tương ứng với một hàng được xác định bởi com.android.veinating dưới dạng gói thông báo. Chúng tôi mong muốn xóa tập tin đó. Đây là một sự hy sinh nhỏ để thực hiện.
- nếu thực sự có một đường dẫn tệp dưới _data , thì hãy sử dụng nó để xóa tệp được chỉ bởi nó.
- xóa hàng đó, nếu không, nó sẽ được Trình quản lý tải xuống đọc khi kết nối mạng thay đổi (được kết nối lại với Wi-Fi) và tự động cập nhật sẽ bắt đầu lại.
- vô hiệu hóa dịch vụ Play Store đã nói ở trên để tự động cập nhật không bao giờ bắt đầu trên chính nó
- bật Wi-Fi
- kích hoạt dữ liệu di động, nếu nó được kích hoạt trước khi chạy tác vụ này.
1 Tại thời điểm tạo bản sửa đổi đầu tiên của câu trả lời này, phiên bản Play Store hiện tại chắc chắn không phải là 6.0.5 mà ở trên. Tuy nhiên, cho đến nay, không có thiết bị nào của tôi nhận được bất kỳ bản cập nhật Play Store nào nữa.