一、通知的基本概念
通知是Android系统中最常用的功能之一,能够在应用程序运行时,利用Android系统提供的通知管理器组件推送一些重要信息到状态栏上,以方便用户在不打断其它正在进行的操作的情况下及时获取到这些信息。Android通知的作用不仅在于提醒,还可以使用通知栏提供的各种点击方式让用户快速进入应用程序中的某个特定界面。
二、通知的使用步骤
Android通知的使用步骤有三步:
1、创建一个通知对象,通常是开发者需要提供一些通知基本信息,例如通知的标题、内容、图标等等。
2、调用 NotificationManager 的 notify() 方法将通知对象显示到状态栏上。
3、如果需要定制通知的行为,则可以为通知绑定一个 PendingIntent 对象, PendingIntent 对象可以在用户点击通知后跳转到应用程序中的某个指定 Activity 或 Service 中。
三、创建通知对象的详细步骤
以下是创建通知对象的详细步骤:
1、创建 NotificationCompat.Builder 对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, channelId);
其中 this 是当前 Activity 对象,channelId 是应用程序内部使用的通知渠道 ID,用于区分通知的种类。
2、设置通知的基本信息
builder.setContentTitle("通知标题") .setContentText("通知内容") .setSmallIcon(R.mipmap.ic_launcher) .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round)) .setAutoCancel(true) .setContentIntent(pendingIntent);
其中 setContentTitle() 设置通知的标题,setContentText() 设置通知的内容,setSmallIcon() 设置通知栏中通知的小图标, setLargeIcon() 设置通知栏中通知的大图标, setAutoCancel() 在用户点击通知后自动消失, setContentIntent() 为通知设置 PendingIntent。
3、创建 Notification 对象
Notification notification = builder.build();
4、调用 NotificationManager 的 notify() 方法显示通知
notificationManager.notify(notificationId, notification);
其中 notificationId 是通知的编号,用于区分不同的通知。
四、通知的进阶用法
以上是基本应用的通知实现,通常作为一款优秀的应用,在通知的实现上,可以进行更多的扩展。
1、设置通知的优先级
builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
setPriority() 方法用于设置通知的优先级,可以取以下的值:
- PRIORITY_HIGH:高优先级,会在状态栏中显示,并发出提示音。
- PRIORITY_DEFAULT:默认优先级,会在状态栏中显示,但不会发出提示音。
- PRIORITY_LOW:低优先级,不会在状态栏中显示,但会被折叠在通知抽屉中。
- PRIORITY_MIN:最低优先级,不会在状态栏中显示,只会在通知抽屉中显示。
- PRIORITY_MAX:最高优先级,显示在状态栏中并发出提示音。
2、设置通知的声音和震动
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); builder.setSound(alarmSound); builder.setVibrate(new long[] {0, 1000, 1000, 1000});
setSound() 方法用于设置通知的提示音, setVibrate() 方法用于设置通知的震动模式。
3、设置通知的灯光
builder.setLights(Color.GREEN, 2000, 1000);
setLights() 方法用于设置通知的 LED 灯的颜色、亮起时长和灭掉时长。
4、设置通知的样式
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); inboxStyle.setBigContentTitle("五条通知"); for (String content : messageList) { inboxStyle.addLine(content); } builder.setStyle(inboxStyle);
可以使用 NotificationCompat.Builder 的 setStyle() 方法为通知定义不同的样式。Android 系统提供了以下样式:
- BigPictureStyle:展示一张大图。
- InboxStyle:可以展示多行文本。
- MessagingStyle:展示来自不同人的多个消息。
- MediaStyle:展示通知与音乐播放器的集成。
五、补充说明
如需使用 Android 通知,需要在 AndroidManifest.xml 文件中声明通知权限:
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />