#android #push-notification #android-notifications #android-broadcastreceiver
#Android #push-уведомление #android-уведомления #android-broadcastreceiver
Вопрос:
У меня есть BroadcastReceiver(), и метод onReceive вызывается, даже когда приложение приостановлено / мертво. Я хочу, чтобы onReceive вызывался только тогда, когда пользователь открывает уведомление с главного экрана, как я могу это сделать?
Основной класс:
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
};
final Intent intent = registerReceiver(broadcastReceiver, intentFilter);
Класс BroadcastReceiver
Intent intent;
if(rootActivity.getPackageName().equalsIgnoreCase("myapp"))
{
//your app is open
intent = new Intent();
intent.setComponent(rootActivity);
} else {
//your app is not open,start it by calling launcher activity
intent = new Intent(context, MainActivity.class);
}
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(contentIntent);
Манифест
android:launchMode="singleTop"
Комментарии:
1. Просто отмените регистрацию вашего получателя, когда ваша активность будет уничтожена.
2. Тогда я не совсем понимаю вопрос, если вы хотите получать уведомления только при выполнении действия, тогда зарегистрируйте своего получателя при запуске действия и отмените его регистрацию при уничтожении действия.
3. Если я отменю регистрацию получателя, уведомления не будут получены, когда приложение находится в состоянии «принудительной остановки». Возможно ли получать уведомления в этой ситуации? Я вижу, что приложение Twitter делает, например…
4. На самом деле никаких уведомлений после принудительной остановки не требуется для Android, поэтому отмена регистрации работает!