Android通知——Notification使用浅析(一)

本文介绍了Android通知的使用,包括创建通知、定义Action、更新与取消通知以及自定义通知布局。讲解了Notification的基本属性如小图标、标题和内容,并展示了如何设置Action以实现与用户的交互。此外,还探讨了在不同Android版本下如何自定义通知布局,特别是如何处理高度和背景色的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 序言

当某个应用程序希望想用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。发出一条通知,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。通知栏和抽屉式通知栏均是由系统控制,用户可以随时查看。

通知的用法比较灵活,既可以在服务中创建,又可以在广播里创建。

Notification的类型主要有以下几种:

  • 状态栏和抽屉式通知栏
    发出通知后,通知先以图标的形式显示在状态栏中
    在这里插入图片描述之后用户在状态栏向下滑动打开抽屉式通知栏,并在其中查看更多详情及对通知执行操作。
    在这里插入图片描述

  • 提醒式通知
    Android 5.0 开始,通知可以短暂地显示在浮动窗口中,称之为提醒式通知。这种行为通常适用于用户应立即知晓的重要通知,而且仅在设备未锁定时才显示。
    在这里插入图片描述
    提醒式通知会在应用发出通知后立即出现,稍后便会消失,但仍照常显示在抽屉式通知栏中。

  • 锁定屏幕
    Android 5.0 开始,通知可以显示在锁定屏幕上。
    您可以程序化地设置您的应用在安全锁定屏幕上所发布通知的详情可见等级,甚至可以设置通知是否显示在锁定屏幕上
    在这里插入图片描述

  • 应用图标标志
    在所支持的设备(搭载 Android 8.0(API 级别 26)及更高版本)启动器中,应用图标通过在相应的应用启动器图标上显示彩色“标志”(又称“通知圆点”)来表示有新通知。
    用户可以长按应用图标以查看该应用的通知。然后,用户可以关闭通知或者在长按菜单中对通知执行操作(类似于抽屉式通知栏)
    在这里插入图片描述
    通知的常见用途

  • 显示接收的短消息,及时消息等信息(如QQ,微信、新浪、短信等)

  • 显示客户端的推送消息,如广告,优惠,版本更新。常见的第三方SDK有:JPush、个推、信鸽、阿里云推送等

  • 显示正在进行的事物,如后台运行的程序,如音乐播放,下载进度等。

2. Notification基本使用

在这里插入图片描述
这里涉及到的Notification相关使用都是在Android8.0(api 26)之前的,关于Notification在Android8.0 之后的适配后续详细讲述

通知栏主要涉及到两个类:NotificationNotificationManager

  • Notification为通知信息类,里面对应了通知栏的各个属性
  • NotificationManager:是状态栏通知的管理类,负责发通知,清除通知等操作。

2.1 创建通知

通知的设计由系统模板决定,您的应用只需要定义模板中各个部分的内容即可。通知的部分详情仅在展开后视图中显示。
在这里插入图片描述

  1. 小图标:必须提供,通过 setSmallIcon() 进行设置。
  2. 应用名称:由系统提供。
  3. 时间戳:由系统提供,但您可以通过 setWhen() 将其替换掉或者通过 setShowWhen(false) 将其隐藏。
  4. 大图标:可选内容(通常仅用于联系人照片,请勿将其用于应用图标),通过 setLargeIcon() 进行设置。
  5. 标题:可选内容,通过 setContentTitle() 进行设置。
  6. 文本:可选内容,通过 setContentText() 进行设置。

Notification创建前必须要添加的属性

  • 小图标,通过setSmallcom()设置
  • 标题,通过setContentTitle()设置
  • 内容,通过setContentText()设置

通知栏的创建主要涉及到Notification.BuilderNotificationNotificationManager,其中Notification.Builder作用是使用建造者模式构建Notification对象

基本使用步骤如下:

  • 创建NotificationManager
    首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()获取到。该方法接收一个字符串参数用于确定获取系统的哪个服务。

  • 创建通知栏的Builder构造类:Notification.Builder,使用的是建造者模式,创建Notification对象,这里可以在终极build()之前连缀任意多的设置方法来创建一个丰富的Notification对象。

public class MainActivity extends AppCompatActivity {
   
   

    private TextView mSendNotifi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSendNotifi = (TextView) findViewById(R.id.send_notifi);
        mSendNotifi.setOnClickListener(new View.OnClickListener() {
   
   
            @Override
            public void onClick(View v) {
   
   
                sendNotification();
            }
        });

    }

    private void sendNotification() {
   
   
        int id = 1;
        Drawable drawable = ContextCompat.getDrawable(this, R.drawable.btn_audio_next_normal);
        Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
        
		/* 创建通知栏的Builder构造类 */
        Notification.Builder mBuilder = new Notification.Builder(this);
        //设置小图标
        mBuilder.setSmallIcon(R.drawable.ic_launcher_background);
        //设置大图标
        mBuilder.setLargeIcon(bitmap);
        //设置标题
        mBuilder.setContentTitle("这是标题");
        //设置通知正文
        mBuilder.setContentText("这是正文,当前ID是:" + id);
        //设置摘要
        mBuilder.setSubTex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值