У меня есть 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>
При получении намерения я показываю уведомление, содержащее некоторую информацию о пакете. Моя проблема в том, что когда я добавляю новое приложение, например, во время отладки, из PackageHandler
получаются два намерения, и, таким образом, отображаются два уведомления. Чтобы проиллюстрировать это, BroadcastReceiver
, который обрабатывает обсуждаемые намерения, будет показывать запись logcat при каждой отправке намерения, что в два раза больше, когда я обновляю приложение:
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
Однако мне нужно решение, которое отслеживает уже показанное сообщение журнала (от обработки других намерений). С точки зрения уведомлений я также мог бы при желании удалить дополнительные уведомления после их отображения. У кого-нибудь есть рабочее решение? Обратите внимание, что я поддерживаю API 1.5.