Мне нужно запустить приложение при получении уведомления. Следующий фрагмент кода отлично работает, когда приложение убито и получено уведомление (т. Е. Код внутри if). Но когда приложение работает на переднем плане или в фоновом режиме, создается несколько экземпляров активности (например, фрагмент в другом состоянии). Это не MainActivity, который должен быть запущен при получении уведомления, вместо этого это другое действие, содержащее широковещательный приемник. Я добавил следующие строки в поле onMessage класса GCMintentService.Открытая активность Android при получении уведомления
if (currentPackage.equalsIgnoreCase(context.getPackageName()
.toString())) {
broadcastMessage(context, message);
} else {
Intent mIntent = new Intent(context, MainActivity.class);
mIntent.setAction(Intent.ACTION_MAIN);
mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(mIntent);
}
В своей деятельности, при OnReceive методом BroadcastReceiver, я начинаю свою деятельность снова.
private final BroadcastReceiver mHandleMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
startActivity(getIntent().setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
}
};