我启动了一个前台服务,该服务显示在android系统电池信息下的状态栏中。
是否可以自定义显示的信息(标题,副文本,图标等)?
服务代码:CODE EDITED
@Override
public void onCreate() {
context = this.getApplicationContext();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent notificationIntent = new Intent(context, CallbackTestWidgetService.class);
PendingIntent pendingIntent =
PendingIntent.getActivity(context, 10, notificationIntent, 0);
Notification notification = new Notification.Builder(context, "Test")
.setContentTitle("Test")
.setContentText("text")
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.test)
.setTicker("test")
.build();
CharSequence name = "test";
String description = "test";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel("10", name, importance);
channel.setDescription("test");
// 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);
startForeground(10, notification);
}
}
答案 0 :(得分:2)
您看到的是应用未发布通知时的默认通知。
之所以没有发布通知(尽管您调用startForeground
)是因为您的目标是API 26或更高版本,并且未将通知与notification channel关联。这会导致您的通知完全按照该页面上的注释被丢弃:
警告:如果您以Android 8.0(API级别26)为目标并且在未指定通知渠道的情况下发布通知,则该通知不会出现,并且系统会记录错误。
您必须创建一个通知频道,然后在构建通知时包括该通知频道的ID。
答案 1 :(得分:0)
您正在构建要传递给startForeground的通知。使用createContentView函数,就像您要自定义的常规通知一样。
请注意,这仅适用于更新版本的Android,您可能想使用支持库中的NotiicationCompat类来支持特定于版本的api差异并在一些不同的仿真器API上进行测试。
答案 2 :(得分:0)
https://stackoverflow.com/users/4080424/narb https://stackoverflow.com/users/1676363/ianhanniballake
我无法通过调用setContentTitle(CharSequence)
和setContentText(CharSequence)
来更改通知内容的标题和文本。
你知道为什么吗?