0

バージョンコードを変更して新しいバージョンでリモート更新されるアプリケーションがあります。更新はバックエンド側からプッシュされ、電話はadb OTAクライアントを使用してapkを更新します。アプリケーションが新しいバージョンコードで更新されたときにブロードキャスト自体を受信する方法android

OTAの更新が完了した後、私はアプリケーションを使ってステータスをバックグラウンドに送る必要があります。

実際にパッケージを受け取っているランチャーを使用して、関連するインテントアクションを変更または削除し、メインアプリを起動できます。その後、アプリケーションはユーザーの操作なしでバックエンドにOTA更新ステータスを送信します。 ここにサンプルコードがあります。ランチャーアプリマニフェストで :ここ

<receiver android:name=".receivers.PackageChangedReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
       <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
       <data android:scheme="package"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </receiver> 

は受信機である:

@Override 
    public void onReceive(Context context, Intent intent) { 
     String packageName=intent.getData().getEncodedSchemeSpecificPart(); 
     if(packageName.contains(context.getString("packagename"))) 
     context.startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK)); 
    } 

私の質問私はどのように打ち上げのような主要なアプリを同じことを行うと送信することができますされOTA OTAのアップデート後にランチャーとユーザーとのやりとりがなくてもメインアプリケーションだけを使ってステータスを更新できますか?

+0

私はあなたの質問を理解していません。あなたはすでにあなたのことをやっていると言うと、あなたはそれを行う方法を尋ねる?あなたがやっていることとやっていないことをもっと詳しく説明してください。しかし、助けが必要です。 –

+0

@DavidWasserはい、私は、実際にメインアプリパッケージの変更のブロードキャストステータスを受信し、バックエンドに送信する責任があるランチャーアプリのようなサードパーティのアプリケーションを使用してそれを行うことができます。私の質問は、私はサードパーティのアプリケーションのヘルプなしで同じことを行うことができますです。私のメインアプリのみを使用しています。 – 0xalihn

答えて

0

ランチャーアプリのように、ブロードキャストIntentをキャッチすることができます。それから、あなたが望むことをすることができます。アプリケーション内BroadcastReceiverを作成し、マニフェストにこれらのエントリを追加します。

<receiver android:name=".MyBroadcastReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.PACKAGE_CHANGED" /> 
     </intent-filter> 
    </receiver> 

あなたは<category>または<data>タグを必要としないとアプリが削除された場合、あなたが得ることはありませんので、PACKAGE_REMOVEDをリッスンすることは無意味ですとにかく引き金を引いた。

+0

アプリケーション自体からブロードキャスト受信者フォームを受信できません。私はこれを私のアプリケーションで実装し、それをデバイスにインストールしてから、まずapk(adb install apk)をインストールした後にパッケージをアンインストールしてください(adb uninstall packagename)がインストールされた後、BroadcastReceiverでログを取得できませんでした。それは、BroadcastReceiverが呼び出していないことを意味します。 – 0xalihn

+0

いいえ、これをアンインストールしてから再インストールしても機能しません。 OTAの "更新"をしているとあなたの質問で言いました。あなたが**既存のアプリケーションを更新していると仮定しました**。あなたのアプリがアンインストールされてから再インストールされている場合は、何かをする前にアプリを手動で起動する必要があるため、何もできません。 –

+0

サードパーティのツールを使用して管理したくない場合は、別のアプリを自分で作成することもできます。そのアプリはデバイスにインストールされ、アプリのインストール/削除を監視し、インストールされると自動的にアプリを起動し、サーバーを自動的に更新することができます(サードパーティのアプリと同じように)。しかしこれは別のアプリケーションでなければなりません。 –

関連する問題