如何在android中显示错过的聊天通知计数?

如何在android中显示错过的聊天通知计数?,android,notifications,android-notifications,android-pendingintent,Android,Notifications,Android Notifications,Android Pendingintent,您好,我在聊天应用程序中工作,如果用户A发送请求,如果用户B处于空闲状态,我将在通知中显示,因为您已收到用户A的通知,如果用户B在60秒内未响应,我将清除通知并拨打未接通知。但如果处于空闲状态,并且如果用户看到错过的聊天并清除通知,并且如果下一个通知出现,则需要显示错过聊天通知的总数,它应该显示计数为1,类似于电话错过呼叫。如何继续?这是我完成的代码。我需要在通知中显示计数 这是我试过的代码 notBuilder.setContentIntent(pendingIntent);

您好,我在聊天应用程序中工作,如果用户A发送请求,如果用户B处于空闲状态,我将在通知中显示,因为您已收到用户A的通知,如果用户B在60秒内未响应,我将清除通知并拨打未接通知。但如果处于空闲状态,并且如果用户看到错过的聊天并清除通知,并且如果下一个通知出现,则需要显示错过聊天通知的总数,它应该显示计数为1,类似于电话错过呼叫。如何继续?这是我完成的代码。我需要在通知中显示计数

这是我试过的代码

        notBuilder.setContentIntent(pendingIntent);
        notificationManager.notify(notificationID, notBuilder.build());
        clearPendingNotification(notificationID);
        }
     private void clearPendingNotification(final int id) {
    try {
        new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
            @Override
            public void run() {
                NotificationManager mManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                mManager.cancel(id);
                missedNotification("test");
            }
        }, Constants.CHAT_REQ_TIME);
    } catch (Exception e) {
        LogMessage.e(Constants.TAG, e);
    }
    private void missedNotification(String message) {
    Intent notificationIntent = null;
    Context context = getApplicationContext();
    int notificationID = new Random().nextInt();
    NotificationManager notificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder notBuilder = new NotificationCompat.Builder(
            context);
    notBuilder.setSmallIcon(R.drawable.ic_notification);
    notBuilder.setContentTitle("Missed chat request");
    notBuilder.setContentText("You have" + " " + message + " "
            + "missed chat request from customers");
    notBuilder.setAutoCancel(true);
    notBuilder.setDefaults(Notification.DEFAULT_SOUND);
    notificationIntent = new Intent(context, ActivityExpertDasboard.class);
    notificationIntent.putExtra(Constants.IS_CHAT_REQUEST, true);
    notificationIntent
            .putExtra(Constants.KEY_NOFICATION_ID, notificationID);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
            | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    notificationIntent.putExtra(Constants.CHAT_USER_NAME, msgTo);
    PendingIntent pendingIntent = PendingIntent
            .getActivity(context, notificationID, notificationIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
                            | PendingIntent.FLAG_ONE_SHOT);
    notBuilder.setContentIntent(pendingIntent);
    notificationManager.notify(notificationID, notBuilder.build());

}

}

提前感谢。

将错过的通知数存储在某个位置(如
共享参考
)。您可以不断增加此值,直到用户单击(或刷走)通知。用于调用在取消通知时将重置此存储值的组件。

在@Karakuri的回答中,您还需要检查活动是否可见意味着其在前台。因为您将收到来自GCM的通知,所以您需要打开到该服务的连接,并让该服务知道活动是可见的。当活动可见时,不要发布通知,而是将数据从服务传递到活动,或在数据库中静默插入,并向活动发送一些广播,表明新数据已在数据库中更新。请查询最新消息。

请显示一些链接或代码,说明如何继续。这很好说,但很难实现。:-)您提供了什么解决方案?有一个可用的getRunningTasks()方法,您可以看到所有活动包和活动,但现在它已被弃用,那么您有什么建议吗?您被困在哪里了?我只是想说,由于getRunningTasks()方法被弃用,获取前台活动不像以前那么容易。它已被getRunningAppProcesses()(棒棒糖+)所取代,但此方法的效果不如前一种方法。有时它会显示已处于非活动状态的包。另一个选项是在调用onStart()/onStop()时将值(活动/非活动)保存到某种数据库中。该死的,不需要这样做,只需你的应用程序和服务就可以了。