【问题标题】:Android Show Notification only when Message arrivesAndroid 仅在消息到达时显示通知
【发布时间】:2013-03-05 14:57:35
【问题描述】:

在Android中,我已经实现了谷歌云通知,它会在任何消息到达时通知,但即使有消息它也会保留,它在安装应用程序后立即在通知栏中显示图标,有没有办法只显示通知时消息到达并在用户单击后将其隐藏??

这是我的代码:

    private static void generateNotification(Context context, String message) {
    int icon = R.drawable.ic_launcher;
    long when = System.currentTimeMillis();
    NotificationManager notificationManager = (NotificationManager)
            context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(icon, message, when);

    String title = context.getString(R.string.app_name);

    //Intent notificationIntent = new Intent(context, MainActivity.class);           //Open Activity
    // set intent so it does not start a new activity

    Intent notificationIntent = new Intent(Intent.ACTION_VIEW);

    notificationIntent.setData(Uri.parse("http://www.google.com"));                  //Open Link

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent =
            PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    // Play default notification sound
    notification.defaults |= Notification.DEFAULT_SOUND;

    //notification.sound = Uri.parse("android.resource://" + context.getPackageName() + "your_sound_file_name.mp3");

    // Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);      

}

【问题讨论】:

  • 是的,但是没有您提供的任何代码,很难判断您遇到问题的地方。
  • 抱歉,Tanis.7x -- 刚刚更新了我的代码

标签: android notifications google-cloud-messaging


【解决方案1】:

如果不了解您在哪里接收消息以及您希望在哪里生成和取消通知,那么很难辨别您需要做什么来实现这一点,但我会试一试。

如果您为 Android Connected App Engine project 加载示例项目(通过 GCM),您会注意到在 GCMBaseIntentService 中接收到 GCM 数据。 这个类有一个你可以覆盖的方法,叫做onMessage(),每当你收到GCM消息时都会调用它。如果您在此方法中创建通知,那么您的应用程序只会在收到 GCM 消息时生成通知。

至于取消通知 - 您可以通过调用 NotificationManager 的 cancel() 方法来实现,并传递您要取消的通知的 ID。假设您有某种 Activity 向用户显示消息,这将是取消与特定消息相关的任何未完成通知的好地方。

【讨论】:

  • 这很有帮助。谢谢 Tanis.7x 会尝试同样的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
相关资源
最近更新 更多