我有一个应用程序,我想在屏幕顶部显示一个通知,时间更新,并让它停留在那里,直到用户解散它或按下一个动作。我的问题是,我如何让通知以这种方式停留在屏幕顶部,它也是可更新的吗?
hxzsmxv21#
要使提示通知保持不变,您需要使用
PendingIntent dummyIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); notification.setFullScreenIntent(dummyIntent, true);
我从帖子中得到的理解是,应用程序认为它应该保持在那里,直到全屏意图采取行动,但它永远不会,因为它是一个虚拟意图。https://stackoverflow.com/a/45516069/6296686要更新通知,请使用
notificationBuilder.setOnlyAlertOnce(true); //Use the same builder when updating notificationBuilder.setContentTitle("Updated Title"); notificationManager.notify(notificationID, notificationBuilder.build());
https://stackoverflow.com/a/15538209/6296686
slmsl1lt2#
编辑:我找到了一个使用通知的实际解决方案。请参阅其他答案。
我认为这是通过AlertDialog完成的,而不是通知。我个人只是希望它是“粘性”的,但制作一个更新的自定义AlertDialog应该不会太难。为了在屏幕顶部制作一个AlertDialog,我使用了以下代码。
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context); dialogBuilder.setTitle(getNotificationTitle(context, showingTasks)); dialogBuilder.setNeutralButton("Dismiss", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ //Nothing } }); dialogBuilder.setPositiveButton("Action", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ //Action code } }); Dialog dialog = dialogBuilder.create(); Window window = dialog.getWindow(); WindowManager.LayoutParams windowLayoutParams = window.getAttributes(); windowLayoutParams.gravity = Gravity.TOP; window.setAttributes(windowLayoutParams); dialog.show();
https://stackoverflow.com/a/9467151/6296686
jv4diomz3#
如果您在通知消失之前更新它,它将保留。要做到这一点,您可以发送一个具有新内容但相同id的通知,然后通知将被更新,超时将重置。
3条答案
按热度按时间hxzsmxv21#
要使提示通知保持不变,您需要使用
我从帖子中得到的理解是,应用程序认为它应该保持在那里,直到全屏意图采取行动,但它永远不会,因为它是一个虚拟意图。
https://stackoverflow.com/a/45516069/6296686
要更新通知,请使用
https://stackoverflow.com/a/15538209/6296686
slmsl1lt2#
编辑:我找到了一个使用通知的实际解决方案。请参阅其他答案。
我认为这是通过AlertDialog完成的,而不是通知。我个人只是希望它是“粘性”的,但制作一个更新的自定义AlertDialog应该不会太难。为了在屏幕顶部制作一个AlertDialog,我使用了以下代码。
https://stackoverflow.com/a/9467151/6296686
jv4diomz3#
如果您在通知消失之前更新它,它将保留。要做到这一点,您可以发送一个具有新内容但相同id的通知,然后通知将被更新,超时将重置。