您好我希望通知行为如下:
当我的应用程序没有单一通知时,应该创建一个,但是当托盘中已经有通知时,我想更新通知的数据。
我可以获得当前通知或其他任何方式吗?
此外,我有一种用于通知的UI +数据,在特定事件发生时会频繁触发。
e.g。如果应用程序每5分钟收到一条关于匹配分数的消息,那么应该根据收到的最后一条消息更新当前通知,不应该有每条分数更新消息的通知。
我的代码如下:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(Constants.SOME_DATA, someData);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle(title)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
答案 0 :(得分:0)
如果您希望永久运行单个通知并更新该通知,则必须使用startForeground(NOTIFICATION_ID, notification);
创建前台通知
而且您可以使用相同的NOTIFICATION_ID
来更新通知,其中您的案例是0 / *通知ID * /或者如果您想要简单通知,请使用相同NOTIFICATION_ID
更新您的通知并保留{{1你未决的意图
答案 1 :(得分:0)
设置标记.setOngoing(true)
并始终使用相同的notification id.
,0.
它将更新您当前的通知。
试试这个演示
public class MainActivity extends Activity {
private ImageView ImageButton;
int value;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton = (ImageView) findViewById(R.id.imageButton);
ImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value++;
UpdateNow(value + "");
}
});
}
void UpdateNow(String msg) {
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("asd")
.setContentText(msg)
.setSound(defaultSoundUri)
.setOngoing(true)
.setContentIntent(null);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}