Android 为前台服务发送通用通知而不是自定义通知
Android send out generic notification instead of custom one for foreground service
我正在尝试为我的前台服务创建一个带有操作的自定义通知,但出于某种原因 android 一直在发送通用的“{appname} is 运行 in the background | tap获取更多信息或停止应用程序”通知。
我在我的服务中做什么 class (onStartCommand):
创建通知渠道:
private void createNotificationChannel() {
NotificationChannel serviceChannel = new NotificationChannel(
CHANNEL_ID,
"Foreground Service Channel",
NotificationManager.IMPORTANCE_DEFAULT
);
NotificationManager manager = (NotificationManager) getSystemService(NotificationManager.class);
manager.createNotificationChannel(serviceChannel);
}
创建一个意图(针对 contentIntent)并设置标志:
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationIntent.setAction(Constants.ACTION_MAIN_ACTIVITY);
为所述意图创建待定意图:
PendingIntent pendingIntent = PendingIntent.getActivity(this,
0, notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
创建操作意图及其待定意图:
Intent stopIntent = new Intent(this, WebSocketService.class);
stopIntent.setAction(Constants.ACTION_STOP_SERVICE);
PendingIntent stopPendingIntent = PendingIntent.getService(this,
0, stopIntent,
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
创建通知本身:
Notification.Builder notification = new Notification.Builder(this, CHANNEL_ID)
.setContentTitle("Foreground Service")
.setTicker("TestTicker")
.setContentText("TestText")
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
.setOngoing(true)
.setContentIntent(pendingIntent)
.addAction(android.R.drawable.ic_delete, "Stop", stopPendingIntent);
Notification not = notification.build();
启动服务:
startForeground(1, not);
我已经在多个设备上对此进行了测试 运行 不同版本的 Android(10、11 和 12),但它们都显示相同的结果。
有什么我忽略的吗?我是否在意图上设置了错误的标志?
谢谢!
尝试向通知生成器添加小图标值。
Notification.Builder notification = new Notification.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.icon)
我正在尝试为我的前台服务创建一个带有操作的自定义通知,但出于某种原因 android 一直在发送通用的“{appname} is 运行 in the background | tap获取更多信息或停止应用程序”通知。
我在我的服务中做什么 class (onStartCommand):
创建通知渠道:
private void createNotificationChannel() {
NotificationChannel serviceChannel = new NotificationChannel(
CHANNEL_ID,
"Foreground Service Channel",
NotificationManager.IMPORTANCE_DEFAULT
);
NotificationManager manager = (NotificationManager) getSystemService(NotificationManager.class);
manager.createNotificationChannel(serviceChannel);
}
创建一个意图(针对 contentIntent)并设置标志:
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationIntent.setAction(Constants.ACTION_MAIN_ACTIVITY);
为所述意图创建待定意图:
PendingIntent pendingIntent = PendingIntent.getActivity(this,
0, notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
创建操作意图及其待定意图:
Intent stopIntent = new Intent(this, WebSocketService.class);
stopIntent.setAction(Constants.ACTION_STOP_SERVICE);
PendingIntent stopPendingIntent = PendingIntent.getService(this,
0, stopIntent,
PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
创建通知本身:
Notification.Builder notification = new Notification.Builder(this, CHANNEL_ID)
.setContentTitle("Foreground Service")
.setTicker("TestTicker")
.setContentText("TestText")
.setPriority(Notification.PRIORITY_MAX)
.setWhen(0)
.setOngoing(true)
.setContentIntent(pendingIntent)
.addAction(android.R.drawable.ic_delete, "Stop", stopPendingIntent);
Notification not = notification.build();
启动服务:
startForeground(1, not);
我已经在多个设备上对此进行了测试 运行 不同版本的 Android(10、11 和 12),但它们都显示相同的结果。 有什么我忽略的吗?我是否在意图上设置了错误的标志?
谢谢!
尝试向通知生成器添加小图标值。
Notification.Builder notification = new Notification.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.icon)