Android:notification通知

前言:

android为通知增加了一些特性——Channel,Channel可以帮助用户统一管理通知,开发者可以为不同类型的通知创建同一个通知Channel,所有使用同一个Channel的通知都具有相同的行为。
行为包括:

  • 重要性
  • 声音
  • 闪光灯
  • 振动
  • 在锁屏上显示
  • 替换免打扰模式

通知只有第一次运行时可以通过代码设置通知Channel的行为,用户之后可以通过Settings来更改通知Channel的行为,之后程序将无法通过代码来修改Channel

一:简介

Notification是显示在手机状态栏的通知——手机状态栏位于手机屏幕的最上方,那里一般是显示手机当前的网络状态,电池状态,时间等。
Notification代表全局效果的通知,一般通过NotificationManager服务来发送Notification。

Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式

二:使用

1. 重要的参数

1). NotificationManager

NotificationManager : 是状态栏通知的管理类,负责发通知、清除通知等操作。
注意:NotificationManager 是一个系统Service,所以必须通过getSystemService(NOTIFICATION_SERVICE)方法来获取,方法如下。

NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

2). Notification

Notification为通知信息类,它里面对应了通知栏的各个属性,可以Notification.Builder类来创建

3). Notification.Builder

Notification.Builder提供了如下常用方法:

  • setDefaults():设置通知LED灯,音乐,振动等
  • setAutoCancel():设置点击通知后,状态栏自动删除通知
  • setContentTitle();设置通知标题
  • setContentText():设置通知内容
  • setSmalIcon():为通知设置图标
  • setLargeIcon():为通知设置大图标
  • setTick():设置通知在状态栏的提示文本
  • setContentIntent():设置点击通知后将要启动的程序组件对应的pendingIntent

4). Channel

用于统一管理通知的

2. 发送通知的步骤

  1. 调用getSystemService(NOTIFICATION_SERVICE)来获取系统服务NotificationChannel
  2. 创建NotificationChannel对象,并在NotificationManger上创建该Channel对象
  3. 通过构造器创建一个Notification.Builder设置通知的各种属性
  4. 为Notificaiton.Builder设置通知的各种参数
  5. 创建MessagingStyle和Message,通过Message设置消息内容,为Notification.Builder设置MessagingStyle后创建Notification
  6. 通过NotificationManager发送Notification

三:示例

public class FirstActivity extends Activity {

    @RequiresApi(api = Build.VERSION_CODES.O)
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        //获取NotificationManager
        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        //设置Channel ID和Name以及 importance
        String channelId = "yesmola";
        String channelName = "myNoti";
        int channelImportance = NotificationManager.IMPORTANCE_HIGH;
        //构建Channel 通知通道
        NotificationChannel channel = new NotificationChannel(channelId, channelName, channelImportance);
        manager.createNotificationChannel(channel);

    }

    @RequiresApi(api = Build.VERSION_CODES.O)
    public void sendNoti(View view){
        //需要NotificationManager
        NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        //可以过得Notification
        Notification notification = new Builder(this,"yesmola")
                .setContentTitle("这是我的通知")
                .setContentText("我的通知可真好看")
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.drawable.search)
                .setAutoCancel(true)
                .setShowWhen(true)
                .setColor(Color.RED)   //这是用来设置小图标的颜色
                .build();
        manager.notify(1,notification);

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值