Я хотел бы, чтобы приложения обновлялись автоматически, когда мой телефон подключен к сети (заряжается) и подключен к Wi-Fi. Я легко могу разрешить автообновление только при включенном вайфае с соответствующей опцией в настройках Play Store, но не предотвратить автообновления, если телефон работает от батареи.
Это вызывает ненужный разряд батареи, когда я использую свой телефон по Wi-Fi дома. Учитывая, что автоматическое обновление приложений — это скорее работа демона, чем критическая по времени задача, я не могу поверить, что это не стандартная стратегия энергосбережения.
Знаете ли вы какие-либо приложения или системные обходные пути (в том числе, если устройство рутировано) для достижения этой цели?
Примечание :
Следующее решение:
Просматривая манифест Play Store, я сделал обоснованное предположение, что только следующий сервис, вероятно, является инициатором автоматического обновления приложений по Wi-Fi.
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
Я играл с этим сервисом в нескольких условиях на разных устройствах и нашел его полезным для рассматриваемой цели. Само собой разумеется, что для параметра автоматического обновления приложений в Play Store должно быть установлено значение «Автоматическое обновление приложений только через Wi-Fi».
Вот что вы можете сделать: Установите приложение автоматизации , которое может выполнять ряд действий, когда источник питания и Wi-Fi подключены, а затем отключены. Я использовал Tasker ( пробная версия ; руководство пользователя) в качестве приложения для автоматизации.
Профиль: Настройте два контекста. См. Как создать профиль с несколькими контекстами в Tasker? за любую помощь
Нам понадобятся две задачи: задача входа и задача выхода. Смотрите мой ответ здесь для соответствующей помощи.
Введите задачу : (Действия):
Код → Запустить оболочку
Команда:
pm enable com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\$CheckWifiAndAutoUpdate; я принудительно останавливаю com.android.vending; am startservice com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\$CheckWifiAndAutoUpdate
Выход из задачи : (Действия):
Для этой задачи требуются установленные апплеты Busybox. См. раздел Как установить отсутствующие инструменты командной строки на устройство Android? за соответствующую помощь.
Сеть → Тестовая сеть
%Mdata
Код → Запустить оболочку
Команда:
данные svc отключить; svc wifi отключить; я принудительно останавливаю com.android.vending; я принудительно останавливаю com.android.providers.downloads; down_path=$(запрос содержимого --uri content://downloads/my_downloads --projection _data --where "notificationpackage='com.android.vending'"); [[ "$down_path" != "Ничего не найдено." ]] && эхо $down_path | sed 's/.*=//g' | xargs rm -f || эхо продолжить; удаление содержимого --uri content://downloads/my_downloads --where "notificationpackage='com.android.vending'" pm отключить com.android.vending/com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager\$CheckWifiAndAutoUpdate; SVC включить Wi-Fi; [[ "%Mdata" == "yes" ]] && svc data enable || эхо ничего не делает;
Когда условия для обоих контекстов выполняются, запускается задача ввода. Команды в этой задаче выполняют следующие действия в последовательном порядке:
И это все для начала автообновления.
После того, как он останется активированным, всякий раз, когда профиль деактивируется (просто потому, что условие для контекста больше не выполняется), будет запускаться задача выхода. Эта задача выхода выполняет следующие шаги в последовательном порядке:
работа этих команд заключается в следующем:
Я заметил, что если обновление (выполняется загрузка) для приложения прерывается из-за недоступности Wi-Fi, индикатор выполнения (уведомление) закрывается, статус выполнения сохраняется в строке в таблице загрузок загрузки базы данных .дб . (Эта база данных находится в каталоге данных диспетчера загрузок.) Эта строка также содержит расположение частично загруженного файла.
Чтобы убедиться, что автоматическое обновление не произойдет при следующем успешном подключении к Wi-Fi, и убедиться, что оно никогда не произойдет, когда профиль не выполняет задачу входа, выполните следующие действия остальных команд:
_data
, соответствующем строке, определенной com.android.vending как пакет уведомлений. Мы стремимся удалить этот файл. Это небольшая жертва.1 На момент создания первой версии этого ответа текущая версия Play Store определенно не 6.0.5, а выше. Однако пока ни одно из моих устройств не получило дальнейших обновлений Play Store.
Самое близкое, что я подошел, это объединение двух настроек. Я делаю это на двух устройствах, одно под управлением Android 4.4.4 (KitKat), а другое под управлением Android 5.0.2 (Lollipop).
Кажется, что он получает обновления, по крайней мере, немного чаще, когда он подключен. Это не идеально, но это неплохое половинчатое решение, и оно не требует Tasker или рутирования.
Это можно сделать с помощью Tasker (платное приложение). В Tasker профиль может быть определен при следующих условиях. У него небольшая кривая обучения, но это приложение может заменить почти многие приложения.
Ниже приведен образец профиля,
Когда батарея > X% , включен Wi -Fi и включена зарядка
Включить автоматическую синхронизацию
Это всего лишь образец, вы можете указать условия в зависимости от ваших требований. Поскольку это отдельная тема, я бы посоветовал вам использовать Google Tasker на форумах xda.
В настоящее время в Google Code открыт тикет, поэтому, надеюсь, эта функция будет добавлена в будущем выпуске.
https://code.google.com/archive/p/android-developer-preview/issues/1511
прл77