张萌&韩墨羽--Android Notification通知

目录

在这里插入图片描述

一、通知的基本使用

(1)、效果图

(2)、使用步骤

(3)、细节使用

二、通知的进阶使用

(1)、设置声音

(2)、设置振动

(3)、设置LED灯闪烁

(4)、进行默认效果设置

三、通知的高级使用

(1)、设置富文本信息

(2)、设置带有图片消息

(3)、设置通知重要程度

一、通知的基本使用
(1)、效果图
在这里插入图片描述

(2)、使用步骤
1、首先需要一个NotificationManager来进行管理,可以调用Context的getSystemService方法获取,这里传入一个Context。NOTIFICAATION_SERVICE即可。

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2、需要使用一个Builder构造器来创建Notification对象,由于API不同会造成不同版本的通知出现不稳定的问题, 所以这里使用NotificationCompat类来兼容各个版本。

Notification notification = new NotificationCompat.Builder(MainActivity.this).build();

3、基本设置

.setContentTitle("这是测试通知标题")  //设置标题
.setContentText("这是测试通知内容") //设置内容
.setWhen(System.currentTimeMillis())  //设置时间
.setSmallIcon(R.mipmap.ic_launcher)  //设置小图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))   //设置大图标

4、调用notify()让通知显示出来(第一个参数是ID, 保证每个通知所指定的id都是不同的,第二个参数是notification对象)

manager.notify(1,notification);

(3)、细节使用
  <一>、跳转功能:
使用PendingIntent进行通知点击跳转功能。
PendingIntent的用法:
(1)、通过getActivity()、getBroadcast()、getService()方法获取实例
(2)、参数(Context context, int requestCode, Intent intent, int flags)
第一个参数:Context
第二个参数:requestCode 一般用不到 ,通常设置为0
第三个参数:intent
第四个参数:flags 用于确定PendingIntent的行为。这里传0就行
(3)、使用方法

 Intent intent = new Intent(MainActivity.this,NotificationActivity.class);
                PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);
                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        .setContentTitle("这是测试通知标题")  //设置标题
                        .setContentText("这是测试通知内容") //设置内容
                        .setWhen(System.currentTimeMillis())  //设置时间
                        .setSmallIcon(R.mipmap.ic_launcher)  //设置小图标  只能使用alpha图层的图片进行设置
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))   //设置大图标
                        .setContentIntent(pi)
 //                       .setAutoCancel(true)
                        .build();
                manager.notify(1,notification);

<二>、通知取消:
我们发现当点击查看通知后,通知栏中还保留着通知图标,我们怎么取消呢
(1)、使用setAutoCancel(true)

Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        ...
                       .setAutoCancel(true) //设置为自动取消
                        .build();
                manager.notify(1,notification);

(2)、在跳转后的Activity中

 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.cancel(1);

这里的cancle传入的是一个1,就是我们创建Notification中指定的通知的ID
在这里插入图片描述
二、通知的进阶使用
都是一行代码进行设置, 这里就不分开写了

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        ...
                        .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) //设置通知提示音
                        .setVibrate(new long[]{0,1000,1000,1000}) //设置振动, 需要添加权限  <uses-permission android:name="android.permission.VIBRATE"/>
                        .setLights(Color.GREEN,1000,1000)//设置前置LED灯进行闪烁, 第一个为颜色值  第二个为亮的时长  第三个为暗的时长
                        .setDefaults(NotificationCompat.DEFAULT_ALL)  //使用默认效果, 会根据手机当前环境播放铃声, 是否振动
                        .build();
                manager.notify(1,notification);

三、通知的高级使用
(1)、设置富文本信息
当我们使用setContentText的时候, 内容为很长的字符串, 显示结果是这样的:
在这里插入图片描述
内容显示不全。如果产品就要显示完全的内容文本我们怎么办。
可以使用setStyle()

 Notification notification = new NotificationCompat.Builder(MainActivity.this)
                      ...
                        .setStyle(new NotificationCompat.BigTextStyle().bigText("这是一段很长的文字很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长"))                      
                        .build();
                manager.notify(1,notification);

我们在setStyle()方法中创建了NotificationCompat.BigTextStyle对象。这个对象就是用于封装长文本信息的,调用它的bigText()方法将文字传入就行。
在这里插入图片描述

(2)、设置带有图片消息
在这里插入图片描述
Notification notification = new NotificationCompat.Builder(MainActivity.this)

.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)))
.build();
manager.notify(1,notification);

通知内加入图片(大图)中的调用方法

(3)、设置通知重要程度

Notification notification = new NotificationCompat.Builder(MainActivity.this)
                      ...
                        .setPriority(NotificationCompat.PRIORITY_MAX)
                        .build();
                manager.notify(1,notification);

setPriority方法接收一个整形参数用于设置这条通知的重要程度, 有五个值可以选择
PRIORITY_DEFAULT:表示默认重要程度,和不设置效果一样
PRIORITY_MIN:表示最低的重要程度。系统只会在用户下拉状态栏的时候才会显示
PRIORITY_LOW:表示较低的重要性,系统会将这类通知缩小,或者改变显示的顺序,将排在更重要的通知之后。
PRIORITY_HIGH:表示较高的重要程度,系统可能会将这类通知方法,或改变显示顺序,比较靠前
PRIORITY_MAX:最重要的程度, 会弹出一个单独消息框,让用户做出相应。
在这里插入图片描述
设置为MAX显示情况。

猜你喜欢

转载自blog.csdn.net/Zephyr_0312/article/details/95094646
今日推荐