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显示情况。
好了,这些就是通知栏的使用了,谢谢阅读。

  • 32
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
Android常驻通知(Notification)是指在用户状态栏中一直显示的通知图标和文本内容,不会因为用户操作或应用进程被销毁而消失。常驻通知通常用于实时监测、后台服务、音乐播放等需要持续提醒用户的场景。 常驻通知的实现步骤如下: 1. 首先,需要创建一个Notification对象,包括通知图标、标题、内容等信息。 2. 然后,创建一个PendingIntent,用于定义用户点击通知后的操作,比如打开应用的某个Activity或执行某个Service。 3. 创建一个NotificationChannel(通知渠道),用于定义通知的重要程度,包括声音、震动等设置。 4. 将Notification对象与PendingIntent关联,并将其设置为常驻通知的优先级。 5. 最后,调用NotificationManager的notify方法,将通知显示在用户的状态栏上。 需要注意的是,常驻通知存在一些使用限制和最佳实践: 1. 用户可以通过设置中的通知管理来关闭或打开特定应用的常驻通知。 2. 常驻通知不适合用于广告或频繁推送的内容,以免打扰用户。 3. 为了避免误导用户,常驻通知的图标和文本内容应与应用的实际情况相符。 4. 如果需要更新通知的内容或操作,可以使用NotificationManager的notify方法进行更新,并保持通知的id不变。 总之,常驻通知Android提供的一个重要功能,可以实现持续提醒用户和后台监测的需求。但应用开发者需要注意使用场景和用户体验,遵循Android的最佳实践,以确保用户对常驻通知的接受和理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值