Bagaimana mengizinkan pembaruan otomatis aplikasi di Play Store hanya ketika dicolokkan?

14

Saya ingin aplikasi diperbarui secara otomatis ketika ponsel saya terhubung (pengisian) dan pada wifi. Saya dapat dengan mudah memperbolehkan pembaruan otomatis hanya ketika wifi aktif dengan opsi yang sesuai di pengaturan Play Store, tetapi tidak mencegah pembaruan otomatis terjadi jika ponsel menggunakan baterai.

Ini menyebabkan baterai tidak perlu habis saat saya menggunakan ponsel saya di wifi di rumah. Mengingat bahwa aplikasi pembaruan otomatis lebih merupakan pekerjaan daemon daripada tugas penting waktu, saya tidak percaya itu bukan strategi penghematan daya standar.

Apakah Anda tahu ada aplikasi atau solusi sistem (termasuk jika perangkat di-rooting) untuk mencapai ini?

Erwin Mayer
sumber

Jawaban:

4

Catatan :

Solusi berikut:

  • diuji pada Android 4.2.1, COS12 (Android 5.0.2) dan CM12.1 (Android 5.1.1) - semuanya menjalankan Play Store v6.0.5 1
  • membutuhkan Android yang di-rooting
  • di sini adalah demo singkat dari solusi

Saat menelusuri manifes Play Store, saya menduga bahwa hanya layanan berikut yang mungkin merupakan pemrakarsa pembaruan otomatis aplikasi melalui Wi-Fi.

com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate

Saya bermain dengan layanan itu di bawah beberapa kondisi pada perangkat yang berbeda dan merasa berguna untuk tujuan yang dimaksud. Tak perlu dikatakan bahwa pengaturan pembaruan otomatis aplikasi harus diatur ke "Perbarui aplikasi secara otomatis melalui Wi-Fi saja" di Play Store.

Inilah yang dapat Anda lakukan: Instal aplikasi yang dapat melakukan serangkaian tindakan ketika sumber daya dan Wi-Fi tersambung dan nanti, terputus. Saya menggunakan Tasker ( versi percobaan ; userguide ) sebagai aplikasi otomatisasi.

Kami akan membutuhkan dua tugas: tugas masuk dan tugas keluar. Lihat jawaban saya di sini untuk bantuan terkait.

  • Masukkan tugas : (Tindakan):

    1. Kode → Jalankan Shell

      • Perintah:

        pm mengaktifkan com.android.vending / com.google.android.finsky.autoupdate.ReschedulerMenggunakanAlarmManager \ $ CheckWifiAndAutoUpdate;
        saya memaksa-berhenti com.android.vending;
        saya startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerMenggunakanAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • centang Gunakan Root
    2. Anda dapat menambahkan satu tindakan atau lebih untuk memberi tahu diri sendiri bahwa prosedur pembaruan telah dimulai. Saya menggunakan Alert → Flash untuk memberi tahu diri melalui roti panggang.
  • Keluar dari tugas : (Tindakan):

    Tugas ini membutuhkan applet Busybox yang diinstal. Lihat Bagaimana cara menginstal alat baris perintah yang hilang ke perangkat Android? untuk bantuan terkait.

    1. Net → Net Uji

      • Jenis: Data Seluler Diaktifkan
      • Hasil Toko Di: %Mdata
    2. Kode → Jalankan Shell

      • Perintah:

        svc data disable;
        svc wifi menonaktifkan;
        saya memaksa-berhenti com.android.vending;
        am force-stop com.android.providers.downloads;
        down_path = $ (permintaan konten --uri konten: // unduhan / my_downloads --projection _data --where "notificationpackage = 'com.android.vending'");
        [["$ down_path"! = "Tidak ada hasil ditemukan." ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || gema terus;
        hapus konten - isi konten: // unduhan / my_downloads --di mana "notificationpackage = 'com.android.vending'"
        pm nonaktifkan com.android.vending / com.google.android.finsky.autoupdate.ReschedulerMenggunakanAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi aktifkan;
        [["% Mdata" == "yes"]] && svc data mengaktifkan || gema tidak melakukan apa-apa;
        
      • centang Gunakan Root
    3. Sekali lagi, untuk memberi tahu diri sendiri, gunakan tindakan apa pun pilihan Anda.

Apa tugasnya?

Ketika kondisi untuk kedua konteks terpenuhi, tugas masuk dijalankan. Perintah dalam tugas itu melakukan hal-hal ini secara berurutan:

  • aktifkan layanan Play Store tersebut di atas
  • paksakan Play Store
  • mulai layanan Play Store tersebut

Dan itu semua untuk memulai pembaruan otomatis.

Setelah tetap diaktifkan, setiap kali profil dinonaktifkan (hanya karena kondisi untuk konteks tidak terpenuhi lagi) tugas keluar akan berjalan. Tugas keluar itu menjalankan langkah-langkah berikut secara berurutan:

  • menyimpan status (diaktifkan / dinonaktifkan) data seluler dalam variabel Mdata
  • tugas dari perintah-perintah itu adalah:

    • nonaktifkan data seluler
    • nonaktifkan Wi-Fi
    • paksakan Play Store
    • paksa Download Manager

    Saya memperhatikan bahwa jika update (download berlangsung) untuk sebuah aplikasi terganggu karena tidak tersedianya Wi-Fi, progress bar (pemberitahuan) diberhentikan, status kemajuan akan disimpan berturut-turut dalam tabel download database download .db . (Basis data itu terletak di bawah direktori data Download Manager.) Baris itu juga berisi lokasi file yang diunduh sebagian.

    Untuk memastikan bahwa pembaruan otomatis tidak terjadi pada koneksi sukses berikutnya ke Wi-Fi dan memastikan bahwa itu tidak pernah terjadi ketika profil tidak menjalankan tugas masukkan, berikut adalah apa yang dilakukan perintah lainnya:

    • ekstrak lokasi file yang diunduh sebagian dari nilai di kolom yang _datasesuai dengan baris yang diidentifikasi oleh com.android.vending sebagai paket notifikasi. Kami bermaksud menghapus file itu. Ini adalah pengorbanan kecil untuk dilakukan.
    • jika memang ada path file di bawah _data , kemudian gunakan untuk menghapus file yang ditunjuk olehnya.
    • hapus baris itu, jika tidak, itu akan dibaca oleh Download Manager ketika konektivitas jaringan berubah (terhubung kembali ke Wi-Fi) dan pembaruan otomatis akan dimulai lagi.
    • nonaktifkan layanan Play Store tersebut di atas sehingga pembaruan otomatis tidak pernah dimulai sendiri
    • aktifkan Wi-Fi
    • aktifkan data seluler, jika diaktifkan sebelum menjalankan tugas ini.

1 Pada saat membuat revisi pertama dari jawaban ini, versi Play Store saat ini jelas bukan 6.0.5 tetapi di atas. Namun, sejauh ini tidak ada perangkat saya yang menerima pembaruan Play Store lebih lanjut.

Firelord
sumber
Skrip tidak berfungsi untuk saya jadi hanya sebagai langkah pemecahan masalah kecil, saya menjalankan perintah "konten permintaan" secara manual dan melihat itu memang menghasilkan string "Tidak ditemukan hasil" sehingga baris berikutnya "penghapusan konten" tidak melakukan apa-apa sejak kondisi JIKA tidak benar.
prl77
2

Yang paling dekat saya datang adalah menggabungkan dua pengaturan. Saya melakukan ini pada dua perangkat, satu menjalankan Android 4.4.4 (KitKat) dan lainnya menjalankan Android 5.0.2 (Lollipop).

  • Pengaturan Sistem → Wi-Fi → Tingkat Lanjut → Tetap aktifkan Wi-Fi saat tidur → Hanya saat dicolokkan
  • Play Store → Pengaturan → Aplikasi pembaruan otomatis → Perbarui aplikasi secara otomatis hanya melalui Wi-Fi

Tampaknya mengambil pembaruan setidaknya sedikit lebih sering ketika dicolokkan. Ini tidak sempurna, tapi itu bukan solusi setengah buruk, dan itu tidak memerlukan Tasker atau rooting.

Benjamin Oakes
sumber
0

Ini dapat dicapai dengan menggunakan Tasker (Aplikasi Berbayar). Dalam Tasker, Profil dapat didefinisikan memiliki kondisi berikut. Ini memiliki sedikit kurva belajar, tetapi Aplikasi ini dapat menggantikan hampir banyak aplikasi.

Di bawah ini adalah profil sampel,

Ketika Baterai> X% Dan Wifi HIDUP dan Pengisian Daya diaktifkan

Aktifkan Sinkronisasi Otomatis Aktif

Ini hanya satu contoh, Anda dapat menentukan kondisi berdasarkan kebutuhan Anda. Karena ini adalah topik yang terpisah, saya akan mendorong Anda ke google tasker di forum xda.

Cyborgz
sumber
3
Bukankah ini akan mengaktifkan / menonaktifkan semua penyelarasan otomatis untuk semua data? Harus menyegarkan setiap layanan lainnya secara manual supaya Play Store tidak memperbarui secara otomatis tampaknya kurang ideal.
Tn. Buster