我希望在插入手机(收费)和wifi时自动更新应用程序。仅当在Play商店设置中使用适当的选项打开wifi时,我才能轻松允许自动更新,但是如果手机使用电池供电,则无法阻止自动更新。
当我在家中通过wifi使用手机时,这会导致不必要的电池消耗。鉴于自动更新应用程序不是时间紧迫的任务,而是更多的后台工作,我不认为这不是标准的节能策略。
您是否知道实现此目的的任何应用程序或系统解决方法(包括设备是否已植根)?
我希望在插入手机(收费)和wifi时自动更新应用程序。仅当在Play商店设置中使用适当的选项打开wifi时,我才能轻松允许自动更新,但是如果手机使用电池供电,则无法阻止自动更新。
当我在家中通过wifi使用手机时,这会导致不必要的电池消耗。鉴于自动更新应用程序不是时间紧迫的任务,而是更多的后台工作,我不认为这不是标准的节能策略。
您是否知道实现此目的的任何应用程序或系统解决方法(包括设备是否已植根)?
Answers:
注意事项:
解决方案:
浏览Play商店的清单时,我有一个有根据的猜测,即只有以下服务可能是通过Wi-Fi自动更新应用程序的发起者。
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
我在少数情况下在不同设备上使用该服务,发现它对于所讨论的目标很有用。不用说,应用程序的自动更新设置应在Play商店中设置为“仅通过Wi-Fi自动更新应用程序”。
您可以执行以下操作:安装一个自动化应用程序,该应用程序在连接电源和Wi-Fi以及稍后断开连接时可以执行一系列操作。我用塔斯克(试用版 ; userguide)作为自动化应用。
配置文件:设置两个上下文。请参阅如何在Tasker中创建具有多个上下文的配置文件?获得任何相关帮助
我们将需要两个任务:一个入口任务和一个出口任务。见我的答案在这里对相关的帮助。
输入任务:(操作):
代码→运行Shell
命令:
pm启用com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate; 是强制停止com.android.vending; 是startservice com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate
退出任务:(操作):
此任务需要安装Busybox的applet。请参阅如何在Android设备上安装缺少的命令行工具?寻求相关帮助。
网→测试网
%Mdata
代码→运行Shell
命令:
svc数据禁用; svc wifi disable; 是强制停止com.android.vending; 强制停止com.android.providers.downloads; down_path = $(内容查询--uri内容:// downloads / my_downloads --projection _data-其中“ notificationpackage ='com.android.vending'”); [[“ $ down_path”!=“未找到结果。” ]] && echo $ down_path | sed's /.*=// g'| xargs rm -f || 回声继续; 内容删除--uri内容:// downloads / my_downloads-其中“ notificationpackage ='com.android.vending'” pm禁用com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate; svc wifi启用; [[“”%Mdata“ ==”是“]] && svc数据启用|| 回声什么都不做;
当两个上下文的条件都满足时,将运行enter任务。该任务中的命令按顺序执行以下操作:
这就是开始自动更新的全部。
保持激活状态后,无论何时停用配置文件(仅仅是因为上下文的条件不再满足),退出任务都会运行。该退出任务按顺序执行以下步骤:
这些命令的工作是:
我注意到,如果由于无法使用Wi-Fi而中断应用程序的更新(正在进行下载),则进度条(通知)被取消,进度状态存储在数据库下载的表下载行中.db。(该数据库位于下载管理器的数据目录下。)该行还包含部分下载的文件的位置。
为了确保自动更新不会在下一次成功连接到Wi-Fi时发生,并确保当配置文件未运行enter任务时自动更新从未发生,以下是其余命令:
_data
com.android.vending标识为Notificationpackage的行相对应的列中的值中提取部分下载的文件的位置。我们旨在删除该文件。这是一个小的牺牲。1在创建此答案的第一个修订版时,当前的Play商店版本肯定不是6.0.5,而是更高版本。但是,到目前为止,我的设备都没有收到Play商店的任何进一步更新。
我最近来的是结合两个设置。我在两台设备上执行此操作,一台运行Android 4.4.4(KitKat),另一台运行Android 5.0.2(Lollipop)。
它似乎在插入时至少会更频繁地获取更新。虽然它不是完美的,但它并不是一个好的解决方案,并且不需要Tasker或生根。
这可以使用Tasker(付费应用程序)来实现。在Tasker中,概要文件可以定义为具有以下条件。它几乎没有学习曲线,但是该应用程序可以替代几乎所有应用程序。
以下是样本资料,
当电池> X%且Wifi开启且已启用充电时
启用自动同步
这只是示例之一,您可以根据需要指定条件。由于这是一个单独的主题,我鼓励您在xda论坛中使用Google Tasker。
Google代码现已开放一个票证,因此希望此功能会在以后的版本中添加。
https://code.google.com/archive/p/android-developer-preview/issues/1511