プラグインされている場合にのみPlayストアでアプリの自動更新を許可する方法は?


14

携帯電話を接続(充電)し、wifiに接続すると、アプリが自動的に更新されます。Playストア設定の適切なオプションでwifiがオンになっている場合にのみ自動更新を簡単に許可できますが、電話がバッテリーで実行されている場合は自動更新の発生を防止できません。

これは、自宅でWi-Fiで携帯電話を使用しているときに、不必要なバッテリーの消耗を引き起こしています。アプリの自動更新は時間のかかるタスクというよりもデーモンの仕事であるため、標準的な省電力戦略ではないとは信じられません。

これを達成するためのアプリまたはシステムの回避策(デバイスがルート化されている場合を含む)を知っていますか?

回答:


4

次の解決策:

  • 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つのタスクが必要になります。関連するヘルプについては、こちらの回答をご覧ください。

  • タスクを入力:(アクション):

    1. コード→シェルを実行

      • コマンド:

        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
        
      • ルートを使用する
    2. 更新手順が開始されたことを通知するために、オプションで1つ以上のアクションを追加できます。Alert→Flashを使用して、トースト経由で自分に通知しました。
  • 終了タスク:(アクション):

    このタスクには、 Busyboxのアプレットがインストールされている必要があります。不足しているコマンドラインツールをAndroidデバイスにインストールする方法を参照してください関連するヘルプ。

    1. ネット→テストネット

      • タイプ:モバイルデータ対応
      • 結果の保存先: %Mdata
    2. コード→シェルを実行

      • コマンド:

        svc data disable;
        svc wifi disable;
        強制停止com.android.vending;
        com.android.providers.downloadsを強制停止します。
        down_path = $(content query --uri content:// downloads / my_downloads --projection _data --where "notificationpackage = 'com.android.vending'");
        [["$ down_path"!= "結果が見つかりません。" ]] && echo $ down_path | sed 's /.*=// g' | xargs rm -f || エコーが続く;
        コンテンツ削除--uri content:// downloads / my_downloads --where "notificationpackage = 'com.android.vending'"
        pm disable com.android.vending / com.google.android.finsky.autoupdate.ReschedulerUsingAlarmManager \ $ CheckWifiAndAutoUpdate;
        svc wifi enable;
        [["%Mdata" == "yes"]] && svc data enable || 何もしないエコー。
        
      • ルートを使用する
    3. 繰り返しますが、自分自身に通知するには、任意のアクションを使用します。

これらのタスクは何をしますか?

両方のコンテキストの条件が満たされると、入力タスクが実行されます。そのタスクのコマンドは、これらのことを順番に実行します。

  • 前述のPlayストアのサービスを有効にします
  • 強制停止Playストア
  • 前述のPlayストアのサービスを開始します

自動更新を開始するのは以上です。

アクティブ化されたままになった後、プロファイルが非アクティブ化されると(コンテキストの条件が満たされなくなるため)、終了タスクが実行されます。その終了タスクは、次の手順を順番に実行します。

  • モバイルデータの状態(有効/無効)を変数Mdataに保存する
  • これらのコマンドの役割は次のとおりです。

    • モバイルデータを無効にする
    • Wi-Fiを無効にする
    • 強制停止Playストア
    • 強制停止ダウンロードマネージャー

    Wi-Fiが利用できないためにアプリの更新(進行中のダウンロード)が中断されると、進行状況バー(通知)が消え、進行状況のステータスがデータベースダウンロードのテーブルダウンロードの行に保存されることに気付きました.DB。(そのデータベースは、ダウンロードマネージャーのデータディレクトリの下にあります。)その行には、部分的にダウンロードされたファイルの場所も含まれています。

    Wi-Fiへの次の正常な接続で自動更新が発生しないようにし、プロファイルがEnterタスクを実行していないときに自動更新が行われないようにするために、残りのコマンドは次のとおりです。

    • _datacom.android.vendingによってnotificationpackageとして識別された行に対応する列の値から、部分的にダウンロードされたファイルの場所を抽出します。そのファイルを削除することを目指しています。これは小さな犠牲です。
    • _dataの下に実際にファイルパスがある場合は、それを使用して、それが指すファイルを削除します。
    • そうしないと、ネットワーク接続が変更(Wi-Fiに再接続)されたときにダウンロードマネージャーによって読み取られ、自動更新が再び開始されます。
    • 自動更新が自動的に開始されないように、前述のPlayストアサービスを無効にします
    • Wi-Fiを有効にする
    • このタスクを実行する前にモバイルデータを有効にしていた場合は、モバイルデータを有効にします。

1この回答の最初のリビジョンを作成する時点で、現在のPlayストアバージョンは6.0.5ではなく、上記のバージョンです。ただし、これまでのところ、Playストアのアップデートを受け取ったデバイスはありません。


スクリプトは私にとってはうまくいかなかったので、ちょっとしたトラブルシューティングの手順として、「コンテンツクエリ」コマンドを手動で実行し、実際には「結果が見つかりません」という文字列になることに気づいたので、次の行「コンテンツの削除」は何もしませんIF条件は真ではありません。
prl77

2

最も近いのは、2つの設定を組み合わせることです。これは、Android 4.4.4(KitKat)を実行するデバイスとAndroid 5.0.2(Lollipop)を実行するデバイスの2つのデバイスで実行します。

  • システム設定→Wi-Fi→詳細設定→スリープ中はWi-Fiをオンのままにする→接続されている場合のみ
  • Playストア→設定→アプリの自動更新→Wi-Fi経由でのみアプリを自動更新

それはプラグインされたときに少なくとも少し頻繁に更新をピックアップするようです。それは完璧ではありませんが、悪い半分の解決策ではなく、Taskerやrootingを必要としません。


0

これは、Tasker(有料アプリ)を使用して実現できます。Taskerでは、プロファイルは次の条件で定義できます。学習曲線はほとんどありませんが、このアプリはほとんどのアプリを置き換えることができます。

以下はサンプルプロファイルです。

ときにバッテリー> X%無線LANがオンになっている充電が有効になっています

自動同期を有効にする

これは単なるサンプルです。要件に基づいて条件を指定できます。これは別のトピックなので、xdaフォーラムでGoogle Taskerを使用することをお勧めします。


3
これにより、すべてのデータのすべての自動同期が有効/無効になりませんか?Playストアが自動更新されないように、他のすべてのサービスを手動で更新する必要があるのは理想的ではないようです。
ミスターバスター

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.