java - Android通知不断启动应用程序

标签 java android notifications push-notification

我正在创建一个通知,当收到通知时应用程序启动。我的问题是如何阻止这种情况发生?

final private static void generateNotification(Context context, String message){
    Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);


    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.ic_launcher)
        .setContentTitle(context.getString(R.string.app_name))
        .setContentIntent(intent)
        .setContentText(message)
        .setAutoCancel(true) 
        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS);
    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(0, mBuilder.build());
} 

在GCMIntentService中调用通知:

@Override
protected void onMessage(Context context, Intent intent) {
    Log.i(TAG, "Received message");
    String response = intent.getExtras().getString("response");

    switch(response){
        case "logout":
            String message = "You logged into another device!";
            //displayMessage(context, message);
            // notifies user
            generateNotification(context, message);
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(i);
        break;
        default:

        break;
    }



}

最佳答案

只是不要执行我在下面注释掉的这些行。该代码在接收到 “注销” 消息时启动一个 Activity 。

generateNotification(context, message);
//Intent i = new Intent(context, MainActivity.class);
//i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//startActivity(i);

关于java - Android通知不断启动应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30352949/

相关文章:

java - 打印图形顶点和边缘源/目标 - JGraphT

java - 卢塞恩 : how to get a line of occurence of query

Android:文本到语音的两个实例工作非常缓慢

android - Android OS 可以使用与 Launcher Activity 不同的 Activity 启动应用程序吗?

java - 根据参数化 Junit 测试用例中的不同参数更改断言行为

android - 如何在不增加大小的情况下将文件另存为 apk 在 Android 中(无法安装)

java - 如何删除安卓通知?

azure - 来自 Azure IOT 中心的 SMS 消息传递

objective-c - 强制某个类发布特定的 NSNotification?

java - ActiveMQ:如何在使用临时队列时处理代理故障转移