| setContentText | 指定通知的正文内容 |
| setWhen | 指定通知被创建的时间 |
| setSmallIcon | 设置通知的小图标 |
| setLargeIcon | 设置通知的大图标 |
| bulid | 创建通知 |
以上工作完成后,只需要调用NotificationManager的**notify()**方法就可以让通知显示出来。
notify():接收两个参数
第一个参数是 id,保证每个通知的 id 都是不同的
第二个参数是 Notification对象,直接将上面创建的Notification对象传入即可
因此,显示一个通知就可以写成:
manager.notify(1,notification);
具体实现:
新建一个NotificationTest项目,并修改activity_main.xml中的代码,如下所示:
<?xml version="1.0" encoding="utf-8"?><LinearLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:orientation=“vertical”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<Button
android:id="@+id/send_notice"
android:text=“Send Notice”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content” />
现在我们来优化一下NotificationTest项目,给刚才的通知加上点击功能,让用户点击它的时候可以启动另一个活动。我们创建notification_layout.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<TextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_centerInParent=“true”
android:textSize=“24sp”
android:text=“This is notification layout”/>
这样就把NotificationActivity这个活动准备好了,下面我们修改MainActivity中的内容,给通知加入点击功能,如下:
Intent intent = new Intent(this,NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
然后在NotificationCompat.Builder的后面加上 setContentIntent(pi);
最后,我们再来实现通知取消的功能。方法有两种:
一是NotificationCompat.Builder后在连缀一个 setAutoCancel() 方法
二是显式调用 NotificationManager的 cancel() 方法将它取消:
NotificationManager manager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
manager.cancel();
继续观察NotificationCompat.Builder这个类,可以发现有许多API我们没有用到,接下来列举几种常用的通知API。
| 方法 | 功能 |
| — | — |
| setSound | 设置通知的声音提示 |
| setVibrate | 设置通知时手机的震动 |
| setLights | 设置手机LED灯闪烁 |
| setDefault | 设置通知的默认样式 |
setVibrate 手机震动需要在AndroidManifest.xml文件当中加入如下声明:
(一)当我们使用 setContentText 时候,会发现当出现长文字,导致在通知栏当中文本内容被省略了,此时可以
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
用到 setStyle() 的方法:
…
.setStyle(new NotificationCompat.BigTextStyle().bigText("…"))
.build();
而在通知栏当中加入大图片可以用类似的方法:
…
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory
.decorateResource(getResources(),R.drawable.big_image)))
.build();
以上就是 setStyle() 方法的重要内容了
(二)setPriority() 方法可以设置通知的重要程度。
setPriority() 接收一个参数来设置这条通知的重要程度,分别为以下五种:
| 参数 | 功能 |
| — | — |
| PRIORITY_DEFAULT | 默认的重要程度,和不设置是一样的 |
| PRIORITY_MIN | 最低的重要度 |
| PRIORITY_LOW | 较低的重要度 |
| PRIORITY_HIGH | 较高的重要度 |