注:
次の解決策:
- Android 4.2.1、COS12(Android 5.0.2)およびCM12.1(Android 5.1.1)でテストされています-それらはすべてPlay Store v6.0.5を実行しています 1
- 根ざしたAndroidが必要です
- ここにソリューションの短いデモがあります
Playストアのマニフェストを閲覧しているときに、次のサービスのみがWi-Fiを介したアプリの自動更新のイニシエーターである可能性が高いという経験に基づいた推測を行いました。
com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager$CheckWifiAndAutoUpdate
私はさまざまなデバイスでいくつかの条件の下でそのサービスを試してみましたが、問題の目標に役立つことがわかりました。言うまでもなく、アプリの自動更新設定は、Playストアで「Wi-Fi経由でのみアプリを自動更新する」に設定する必要があります。
できることは次のとおりです。電源とWi-Fiが接続され、後で切断されたときに一連のアクションを実行できる自動化アプリをインストールします。オートメーションアプリとしてTasker(試用版、ユーザーガイド)を使用しました。
エントリタスクと終了タスクの2つのタスクが必要になります。関連するヘルプについては、こちらの回答をご覧ください。
これらのタスクは何をしますか?
両方のコンテキストの条件が満たされると、入力タスクが実行されます。そのタスクのコマンドは、これらのことを順番に実行します。
- 前述のPlayストアのサービスを有効にします
- 強制停止Playストア
- 前述のPlayストアのサービスを開始します
自動更新を開始するのは以上です。
アクティブ化されたままになった後、プロファイルが非アクティブ化されると(コンテキストの条件が満たされなくなるため)、終了タスクが実行されます。その終了タスクは、次の手順を順番に実行します。
- モバイルデータの状態(有効/無効)を変数Mdataに保存する
これらのコマンドの役割は次のとおりです。
- モバイルデータを無効にする
- Wi-Fiを無効にする
- 強制停止Playストア
- 強制停止ダウンロードマネージャー
Wi-Fiが利用できないためにアプリの更新(進行中のダウンロード)が中断されると、進行状況バー(通知)が消え、進行状況のステータスがデータベースダウンロードのテーブルダウンロードの行に保存されることに気付きました.DB。(そのデータベースは、ダウンロードマネージャーのデータディレクトリの下にあります。)その行には、部分的にダウンロードされたファイルの場所も含まれています。
Wi-Fiへの次の正常な接続で自動更新が発生しないようにし、プロファイルがEnterタスクを実行していないときに自動更新が行われないようにするために、残りのコマンドは次のとおりです。
_data
com.android.vendingによってnotificationpackageとして識別された行に対応する列の値から、部分的にダウンロードされたファイルの場所を抽出します。そのファイルを削除することを目指しています。これは小さな犠牲です。
- _dataの下に実際にファイルパスがある場合は、それを使用して、それが指すファイルを削除します。
- そうしないと、ネットワーク接続が変更(Wi-Fiに再接続)されたときにダウンロードマネージャーによって読み取られ、自動更新が再び開始されます。
- 自動更新が自動的に開始されないように、前述のPlayストアサービスを無効にします
- Wi-Fiを有効にする
- このタスクを実行する前にモバイルデータを有効にしていた場合は、モバイルデータを有効にします。
1この回答の最初のリビジョンを作成する時点で、現在のPlayストアバージョンは6.0.5ではなく、上記のバージョンです。ただし、これまでのところ、Playストアのアップデートを受け取ったデバイスはありません。