Android Notification 实例解析与代码展示

0 下载量 133 浏览量 更新于2024-09-01 收藏 84KB PDF 举报
"这篇文档详细解析了Android通知机制,包括`Notification`的使用方法和实例代码,适合开发者学习如何在Android应用中实现通知功能。" Android通知`Notification`是系统提供的一种向用户显示非阻塞信息的方式,它通常出现在状态栏,并且可以在通知中心查看和交互。下面将对Android通知`Notification`进行详细讲解。 ### 1. 使用Builder模式创建 `Notification`通常使用`NotificationCompat.Builder`来构建,这是Android Support Library提供的兼容性类,支持低版本API。例如: ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(this); ``` ### 2. 设置`smallIcon` 每个`Notification`都需要一个`smallIcon`,显示在状态栏中,一般使用应用的图标: ```java builder.setSmallIcon(R.mipmap.ic_launcher); ``` ### 3. 设置内容信息 可以通过以下方法设置`Notification`的主要内容: - `setContentTitle`: 显示通知的标题 - `setContentInfo`: 显示额外的信息,如“3条未读消息” - `setContentText`: 显示通知的详细文本 - `setWhen`: 设置通知的时间戳,通常显示为通知发出的时间 ```java builder.setContentTitle("新消息") .setContentInfo("3条") .setContentText("来自朋友的问候") .setWhen(System.currentTimeMillis()); ``` ### 4. 设置默认效果与标志 使用`setDefaults`可以设置通知的默认行为,如声音、振动和灯光: ```java builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); ``` 通过`setFlags`可以设置通知的特性,如是否可清除: ```java builder.setFlag(Notification.FLAG_AUTO_CANCEL, true); ``` ### 5. 发送通知 发送`Notification`需要`NotificationManager`,通过`getSystemService`获取: ```java NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); int notificationId = 1; manager.notify(notificationId, builder.build()); ``` ### 6. 清除通知 可以使用`NotificationManager`的`cancel`方法清除特定通知,或`cancelAll`清除所有通知: ```java manager.cancel(notificationId); manager.cancelAll(); ``` ### 自定义通知 对于更复杂的布局,可以使用`RemoteViews`创建自定义视图,并通过`setContent`设置到`Notification`中: ```java RemoteViews customView = new RemoteViews(getPackageName(), R.layout.custom_notification); builder.setContent(customView); ``` 点击事件可以通过`PendingIntent`来处理: ```java Intent intent = new Intent(this, MainActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); builder.setContentIntent(pendingIntent); ``` 以上就是Android通知`Notification`的基本使用方法和实例代码。在实际开发中,可以根据需求调整和扩展,以实现丰富的用户体验。为了确保低版本API的兼容性,记得引入`v4`库并使用`NotificationCompat`类。