Builder.setContentTitle作用
时间: 2024-05-28 13:12:34 浏览: 123
Builder.setContentTitle是Android Notification中用来设置通知标题的方法。它可以设置通知的标题,通常用于简短地描述通知的内容。在通知栏中,通知标题会显示在通知的上方,是通知的重要组成部分之一,能够帮助用户快速理解通知的主要内容。通常情况下,通知标题应该简洁明了、言简意赅,让用户能够快速理解通知的内容。
相关问题
public void notifyMe(){ nm=(NotificationManager)getApplicationContext().getSystemService( Context.NOTIFICATION_SERVICE ); builder=new NotificationCompat.Builder(getApplicationContext(),"chat"); builder.setContentTitle("狗子") builder.setContentText(getApplicationContext() .getString(R.string.app_name)) builder.setSmallIcon(R.drawable.left) .setSound(null) .setAutoCancel(true); Notification notification=builder.build(); nm.notify(1,notification); }讲解代码
这段代码用于创建并发送一个通知。具体讲解如下:
1. `nm=(NotificationManager)getApplicationContext().getSystemService( Context.NOTIFICATION_SERVICE );`:获取系统的 `NotificationManager` 对象,用于发送通知。
2. `builder=new NotificationCompat.Builder(getApplicationContext(),"chat");`:创建一个 `NotificationCompat.Builder` 对象,用于构建通知内容。第二个参数是通知渠道的ID,用于在Android 8.0以上版本中控制通知显示。
3. `builder.setContentTitle("狗子")`:设置通知的标题。
4. `builder.setContentText(getApplicationContext() .getString(R.string.app_name))`:设置通知的内容,通过 `getString(R.string.app_name)` 获取 `strings.xml` 文件中定义的字符串资源。
5. `builder.setSmallIcon(R.drawable.left)`:设置通知的小图标,通常是应用程序的图标。
6. `builder.setSound(null)`:设置通知来了时不发出声音。
7. `builder.setAutoCancel(true)`:设置通知点击后自动取消。
8. `Notification notification=builder.build();`:通过 `builder` 构建出一个 `Notification` 对象。
9. `nm.notify(1,notification);`:将 `notification` 发送出去,其中第一个参数是通知的ID,第二个参数是 `Notification` 对象。这个方法会将通知添加到系统通知栏中,并在状态栏上显示出来。
public int onStartCommand(Intent intent,int flags,int startId){ long period = 60 *1000; if(timer==null){ timer=new Timer(); } timer.schedule(new TimerTask() { @Override public void run() { NotificationChannel channel = new NotificationChannel("channel","通知",NotificationManager.IMPORTANCE_DEFAULT); manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); manager.createNotificationChannel(channel); builder = new NotificationCompat.Builder(TimeService.this); builder.setContentTitle("欢迎来到校园新闻app"); builder.setSmallIcon(R.drawable.collection); builder.setChannelId("channel"); Date date = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); builder.setContentText("当前系统时间为:"+formatter.format(date)); builder.setAutoCancel(true); builder.setDefaults(Notification.DEFAULT_ALL); Notification notification = builder.build(); manager.notify(1,notification); } },0,period); return super.onStartCommand(intent, flags, startId); }在安卓API33版本无法加载通知,帮我修改一下这段代码
在 Android API 26(即 Android 8.0)及以上版本,通知渠道(Notification Channel)的设置是必须的,否则通知将不会被显示。因此,你需要在代码中添加通知渠道的设置。以下是修改后的代码:
```
public int onStartCommand(Intent intent, int flags, int startId) {
long period = 60 * 1000;
if (timer == null) {
timer = new Timer();
}
timer.schedule(new TimerTask() {
@Override
public void run() {
String channelId = "channel";
String channelName = "通知";
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
builder = new NotificationCompat.Builder(TimeService.this, channelId);
} else {
builder = new NotificationCompat.Builder(TimeService.this);
}
builder.setContentTitle("欢迎来到校园新闻app");
builder.setSmallIcon(R.drawable.collection);
builder.setContentText("当前系统时间为:" + DateFormat.getDateTimeInstance().format(new Date()));
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
Notification notification = builder.build();
manager.notify(1, notification);
}
}, 0, period);
return super.onStartCommand(intent, flags, startId);
}
```
这里添加了一个判断,如果当前 Android 版本大于等于 Android 8.0,就需要创建通知渠道并使用 channelId 构建 NotificationCompat.Builder 对象;否则,直接使用无参构造函数创建 NotificationCompat.Builder 对象即可。此外,我也修改了时间格式化的方式,使用了 DateFormat 类的 getDateTimeInstance() 方法。
阅读全文