如何在android中显示错过的聊天通知计数?
您好,我在聊天应用程序中工作,如果用户A发送请求,如果用户B处于空闲状态,我将在通知中显示,因为您已收到用户A的通知,如果用户B在60秒内未响应,我将清除通知并拨打未接通知。但如果处于空闲状态,并且如果用户看到错过的聊天并清除通知,并且如果下一个通知出现,则需要显示错过聊天通知的总数,它应该显示计数为1,类似于电话错过呼叫。如何继续?这是我完成的代码。我需要在通知中显示计数 这是我试过的代码如何在android中显示错过的聊天通知计数?,android,notifications,android-notifications,android-pendingintent,Android,Notifications,Android Notifications,Android Pendingintent,您好,我在聊天应用程序中工作,如果用户A发送请求,如果用户B处于空闲状态,我将在通知中显示,因为您已收到用户A的通知,如果用户B在60秒内未响应,我将清除通知并拨打未接通知。但如果处于空闲状态,并且如果用户看到错过的聊天并清除通知,并且如果下一个通知出现,则需要显示错过聊天通知的总数,它应该显示计数为1,类似于电话错过呼叫。如何继续?这是我完成的代码。我需要在通知中显示计数 这是我试过的代码 notBuilder.setContentIntent(pendingIntent);
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()时将值(活动/非活动)保存到某种数据库中。该死的,不需要这样做,只需你的应用程序和服务就可以了。