BroadcastReceiver
新規または変更されたアプリケーションを処理するためのがあります。
<receiver android:name=".PackageHandler" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
インテントを受信すると、パッケージ情報の一部を含む通知を表示します。私の問題は、たとえばデバッグ中に新しいアプリを追加すると、から2つのインテントが受信PackageHandler
されるため、2つの通知が表示されることです。説明のために、これBroadcastReceiver
は説明したインテントを処理し、インテントが送信されるたびにlogcatエントリを表示します。これは、アプリを更新するときに2回表示されます。
public class PackageHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("", "Intent Received: " + intent.getAction());
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
Log.i("Intent Received", intent.getAction());
}
else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
Log.i("Intent Received", intent.getAction());
}
else if (intent.getAction().equals(Intent.ACTION_PACKAGE_CHANGED)) {
Log.i("Intent Received", intent.getAction());
}
}//onReceive
}//PackageHandler
ただし、(別のインテントを処理することから)ログメッセージをすでに表示したことを追跡するソリューションが必要です。通知の観点から、オプションで、表示された後に余分な通知を削除することもできます。誰かが実用的な解決策を持っていますか?API1.5をサポートしていることに注意してください。