Not :
Aşağıdaki çözüm:
- Android 4.2.1, COS12 (Android 5.0.2) ve CM12.1 (Android 5.1.1) üzerinde test edilir - hepsi Play Store v6.0.5 çalıştıran 1
- rootlanmış bir Android gerektirir
- İşte çözümün kısa bir demosu
Play Store manifestine göz atarken, yalnızca aşağıdaki hizmetin muhtemelen uygulamaların Wi-Fi üzerinden otomatik olarak güncellenmesinin başlatıcısı olduğunu eğitimli bir şekilde tahmin ettim.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
Bu hizmetle farklı cihazlarda birkaç koşulda oynadım ve söz konusu hedef için yararlı buldum. Google Play Store'da uygulamaların otomatik güncelleme ayarının "Uygulamaları yalnızca Kablosuz üzerinden otomatik güncelleme" olarak ayarlanması gerektiğini söylemeye gerek yok.
Yapabilecekleriniz: Güç kaynağı ve Wi-Fi bağlandığında ve daha sonra bağlantısı kesildiğinde bir dizi eylemi yürütebilecek bir otomasyon uygulaması yükleyin . Ben kullanılan Tasker ( deneme sürümünü ; klavuzu otomasyon uygulaması gibi).
İki göreve ihtiyacımız olurdu: bir giriş görevi ve bir çıkış görevi. İlgili yardım için cevabımı burada görebilirsiniz .
Görevi girin : (Eylemler):
Kod → Kabuğu Çalıştır
- İsteğe bağlı olarak, güncelleme yordamının başladığını bildirmek için bir veya daha fazla eylem ekleyebilirsiniz. Bir tostla kendimi haberdar etmek için Alert → Flash kullandım.
Görevden çık : (İşlemler):
Bu görev için Busybox uygulamalarının yüklü olması gerekir. Android cihazına eksik komut satırı araçlarını nasıl yükleyebilirim? Konusuna bakın. ilgili yardım için.
Net → Test Ağı
- Tür: Mobil Veri Etkin
- Mağaza Sonucu:
%Mdata
Kod → Kabuğu Çalıştır
Komut:
svc veri devre dışı bırakma;
svc wifi devre dışı bırakma;
am-stop com.android.vending duyuyorum;
am-stop com.android.providers.downloads duyuyorum;
down_path = $ (içerik sorgusu - içerik: // Downloads / my_downloads --projection _data --where "bildirimpackage = 'com.android.vending'");
[["$ down_path"! = "Sonuç bulunamadı." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || yankı devam ediyor;
içerik silme - içerik: // Downloads / my_downloads --where "bildirimpackage = 'com.android.vending'"
pm, com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
svc wifi etkinleştirmek;
[["% Mdata" == "evet"]] && svc verileri etkinleştir || yankı hiçbir şey yapmıyor;
- kene Kök Kullan
- Yine, kendinizi bilgilendirmek için, istediğiniz herhangi bir eylemi kullanın.
Bu görevler ne yapar?
Her iki bağlam için de koşullar sağlandığında, enter görevi çalıştırılır. Bu görevdeki komutlar bunları sırayla yapar:
- yukarıda belirtilen Play Store hizmetini etkinleştirin
- force-stop Play Mağazası
- bahsedilen Play Store hizmetini başlat
Otomatik güncellemenin başlaması için hepsi bu.
Etkinleştirildikten sonra, profil devre dışı bırakıldığında (yalnızca bir bağlamın koşulu artık karşılanmadığı için) çıkış görevi çalışır. Bu çıkış görevi aşağıdaki adımları sırayla yürütür:
- mobil verilerin durumunu (etkin / devre dışı) değişken bir Mdata'da depolamak
bu komutların işi:
- mobil verileri devre dışı bırak
- Kablosuz bağlantıyı devre dışı bırak
- force-stop Play Mağazası
- zorla indirme yöneticisi
Wi-Fi'nin kullanılamaması nedeniyle bir uygulama için bir güncelleme (indirme devam ediyor) kesilirse, ilerleme çubuğunun (bildirim) reddedildiğini, ilerleme durumunun veritabanı indirmelerinin tablo indirmelerinde bir satırda saklandığını fark ettim. .db . (Bu veritabanı Download Manager veri dizininin altında bulunur.) Bu satır, kısmen indirilen dosyanın konumunu da içerir.
Bir sonraki başarılı Wi-Fi bağlantısında otomatik güncellemenin gerçekleşmediğinden emin olmak ve profil enter görevini çalıştırmıyorken hiçbir zaman bunu yapmadığından emin olmak için, komutların geri kalanı aşağıdakileri yapar:
- kısmen indirilen dosyanın konumunu
_data
com.android.vending tarafından bildirim paketi olarak tanımlanan bir satıra karşılık gelen sütundaki değerden çıkarın . Bu dosyayı silmeyi amaçlıyoruz. Bu küçük bir fedakarlıktır.
- gerçekten de _data altında bir dosya yolu varsa , onu işaret eden dosyayı silmek için kullanın.
- bu satırı silerseniz, aksi takdirde ağ bağlantısı değiştiğinde (yeniden bir Wi-Fi'ye bağlandığında) İndirme Yöneticisi tarafından okunur ve otomatik güncelleme yeniden başlar.
- yukarıda belirtilen Play Store hizmetini devre dışı bırakın, böylece otomatik güncelleme hiçbir zaman kendi başına başlamaz
- Kablosuz'u etkinleştir
- bu görevi çalıştırmadan önce etkinleştirildiyse mobil verileri etkinleştirin.
1 Bu cevabın ilk revizyonunu oluştururken mevcut Play Store sürümü kesinlikle 6.0.5 değil ama üstü. Ancak, hiçbir cihazım şu ana kadar başka Play Store güncellemesi almadı.