bounty将在21小时后到期。回答此问题可获得+50声望奖励。Jammy Lee希望引起更多关注此问题。
我正在开发一个应用程序,并希望通过添加正在进行的通知为用户提供功能的快捷方式。这有点像一些字典应用程序这样做,他们提供快捷方式作为快速搜索的通知。
问题是,即使我有setOngoing(true)和setAutoCancel(false),它仍然会被删除,一旦应用程序从多任务窗格关闭。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "C1";
String description = "C1 is C1";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("XXXX")
.setContentText("XXXXXXXX")
.setPriority(NotificationCompat.PRIORITY_MAX)
.setContentIntent(pendingIntent)
.setOngoing(true)
.setAutoCancel(false);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(MainActivity.this);
// notificationId is a unique int for each notification that you must define
notificationManager.notify(NOTIFICATION_ID_2, builder.build());
2条答案
按热度按时间mklgxw1f1#
您可以启动一个 * 前台服务 *,以便您的通知是持久的。您需要将
FOREGROUND_SERVICE
权限添加到manifest
,然后从应用程序构建/启动服务。然后,从服务内部设置通知。The Android docs for foreground services有一个很好的演练。
hjqgdpho2#
在Android 13(API级别33)中,与前台服务链接的通知 * 可以 * 由用户通过滑动手势解除。Android的早期版本不允许解除通知,直到前台服务被停止或从前台删除。
要在API 33及更高版本中使通知不可由用户解除,请使用
Notification.Builder
并在创建期间将setOngoing()
方法设置为TRUE
。Android文档: