Як дозволити автоматичне оновлення програм у Play Store лише під час підключення?


14

Я хотів би, щоб додатки оновлювалися автоматично, коли мій телефон підключений (заряджається) та на wifi. Я можу легко дозволити автоматичне оновлення лише тоді, коли Wi-Fi увімкнено відповідною опцією в налаштуваннях Play Store, але не запобігти виникненню автоматичних оновлень, якщо телефон працює від акумулятора.

Це спричиняє непотрібне розряджання акумулятора, коли я вдома користуюсь телефоном на wifi. Зважаючи на те, що автоматичне оновлення програм - це більше демонстраційна робота, ніж важлива за часом завдання, я не можу повірити, що це не стандартна стратегія економії енергії.

Чи знаєте ви які-небудь додатки чи системне вирішення (в тому числі, якщо пристрій укорінений) для цього?

Відповіді:


4

Примітка :

Наступне рішення:

  • тестується на Android 4.2.1, COS12 (Android 5.0.2) та CM12.1 (Android 5.1.1) - усі вони працюють у Play Store v6.0.5 1
  • потрібен укорінений Android
  • ось короткий демонстраційний варіант рішення

Під час перегляду маніфесту Play Store я зрозумів, що лише наступна послуга є ініціатором автоматичного оновлення програм через Wi-Fi.

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

Я грав із цим сервісом за декількох умов на різних пристроях і вважав його корисним для цілі, про яку йдеться. Само собою зрозуміло, що налаштування автоматичного оновлення програм має бути встановлено на "Автоматичне оновлення програм через Wi-Fi" лише в Play Store.

Ось що можна зробити: встановіть додаток , який може виконувати ряд дій, коли джерело живлення та Wi-Fi підключені, а пізніше відключені. Я використовував Tasker ( пробна версія ; userguide ) як додаток для автоматизації.

Нам знадобляться два завдання: завдання для входу та завдання для виходу. Дивіться мою відповідь тут щодо пов'язаної допомоги.

  • Введіть завдання : (Дії):

    1. Код → Запустити Shell

      • Команда:

        pm увімкніть com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        am-stop-com.android.vending;
        am startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
        
      • галочка Використовувати корінь
    2. Ви можете за бажанням додати одну чи декілька дій, щоб сповістити себе, що процедура оновлення розпочалася. Я використовував Alert → Flash, щоб сповістити себе за тостом.
  • Вихід із завдання : (Дії):

    Для цього потрібно встановити аплети Busybox. Див. Як встановити відсутні пристрої командного рядка на пристрій Android? за відповідну допомогу.

    1. Мережа → Тестова мережа

      • Тип: Мобільна передача даних увімкнена
      • Результат зберігання в: %Mdata
    2. Код → Запустити Shell

      • Команда:

        дані svc відключені;
        svc wifi відключення;
        am-stop-com.android.vending;
        am примусово зупиняти com.android.providers.downloads;
        down_path = $ (запит щодо вмісту --uri вміст: // завантаження / my_downloads --projection _data --where "notificationpakege = 'com.android.vending'");
        [["$ down_path"! = "Результат не знайдено." ]] && відлуння $ down_path | sed 's /.*=// g' | xargs rm -f || відлуння продовжувати;
        content delete --uri content: // downloads / my_downloads --where "notificationpakage = 'com.android.vending'"
        pm відключити com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi включення;
        [["% Mdata" == "так"]] && svc data enable || ехо нічого не роблячи;
        
      • галочка Використовувати корінь
    3. Знову ж таки, щоб сповістити себе, використовуйте будь-які дії на ваш вибір.

Що роблять ці завдання?

Коли умови для обох контекстів виконані, виконується завдання введення. Команди в цьому завданні виконують такі дії в послідовному порядку:

  • увімкніть вищезгадану послугу Play Store
  • Форс-магазин Play Store
  • запустити послугу Play Store

І це все, щоб почалося автоматичне оновлення.

Залишившись активованою, щоразу, коли профіль деактивується (просто тому, що умова контексту вже не відповідає) завдання виходу буде виконуватися. Це завдання виходу виконує наступні кроки в послідовному порядку:

  • зберігати стан (увімкнено / вимкнено) мобільних даних у змінній Mdata
  • Завдання цих команд:

    • вимкнути мобільні дані
    • відключити Wi-Fi
    • Форс-магазин Play Store
    • Менеджер завантажень примусової зупинки

    Я помітив , що якщо оновлення (завантаження триває) для додатка переривається з - за відсутності Wi-Fi, прогрес - бар (повідомлення) звільняється, статус прогресу зберігається в рядку в таблиці завантаження бази даних завантажень .db . (Ця база даних знаходиться в каталозі даних менеджера завантажень.) Цей рядок також містить розташування частково завантаженого файлу.

    Щоб переконатися, що автоматичне оновлення не відбудеться при наступному успішному з'єднанні з Wi-Fi та переконайтеся, що це ніколи не робиться, коли профіль не виконує завдання введення, слідуйте тим, що виконують інші команди:

    • витягніть розташування частково завантаженого файлу зі значення в стовпці, що _dataвідповідає рядку, ідентифікованому com.android.vending як пакунок повідомлень. Ми прагнемо видалити цей файл. Це невелика жертва.
    • якщо під _data дійсно є шлях до файлу , то використовуйте його для видалення вказаного ним файла.
    • видаліть цей рядок, інакше він буде прочитаний менеджером завантажень, коли зміна підключення до мережі (підключена до Wi-Fi) і автоматичне оновлення розпочнеться знову.
    • відключіть вищезгадану послугу Play Store, щоб автоматичне оновлення ніколи не починалося самостійно
    • включити Wi-Fi
    • увімкніть мобільні дані, якщо вони були включені до запуску цього завдання.

1 На момент створення першої редакції цієї відповіді поточна версія Play Store, безумовно, не 6.0.5, але вище. Однак поки що жоден з моїх пристроїв не отримав жодного оновлення Play Store.


Сценарій не працював для мене так само, як невеликий крок усунення несправностей, я запустив команду "Запит на вміст" вручну і помітив, що це дійсно призводить до рядка "Не знайдено результату", тому наступний рядок "Видалення вмісту" нічого не робить, оскільки якщо ІФ умова не відповідає дійсності.
prl77

2

Найближче до мене прийшло поєднання двох налаштувань. Я роблю це на двох пристроях, одному працює Android 4.4.4 (KitKat) та іншому працює Android 5.0.2 (Lollipop).

  • Налаштування системи → Wi-Fi → Додатково → Тримайте Wi-Fi під час сну → Тільки під час підключення
  • Play Store → Налаштування → Автоматичне оновлення програм → Автоматичне оновлення програм лише через Wi-Fi

Начебто, під час підключення підключається оновлення хоч трохи частіше. Це не ідеально, але це не погане напіврозв’язання і для нього не потрібні Tasker або вкорінення.


0

Цього можна досягти за допомогою програми Tasker (платний додаток). У програмі Tasker профіль можна визначити, маючи такі умови. У нього мало кривої навчання, але ця програма може замінити майже багато додатків.

Нижче наведено зразок профілю,

Коли батарея> X% і Wi-Fi увімкнена, і зарядка включена

Увімкнено автоматичну синхронізацію

Це лише зразок першого, ви можете вказати умову, виходячи зі своєї вимоги. Оскільки це окрема тема, я б закликав вас до Google Tasker на xda форумах.


3
Чи не дозволить це ввімкнути / вимкнути автоматичну синхронізацію для всіх даних? Додавання вручну оновлення будь-якої іншої послуги лише для того, щоб Play Store не оновлювався автоматично, здавалося б, менш ідеальним.
Містер Бастер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.