关于Android O的通知(Notification)改动

关于Android O的通知(Notification)改动

介绍

​ 通知(Notification)是Android系统中一个常用的功能。当某些应用程序需要向用户发送提示消息,而该应用程序当前又不在前台运行时,就可以借助通知功能来实现。发出一条通知后,手机最上方的状态栏中就会提示一个通知的图标,下拉状态栏后就可以看到通知的详细内容。

通知(Notification)的基本用法:

​ 首先需要一个NotificationManager来对通知进行管理,通过调用Context的getSystemService()方法可以得到一个NotificationManager实例。接着传入NOTIFICATION_SERVICE确定获取系统的通知服务。

NotificationManager manager = (NotificationManager) 		
	getSystemService(NOTIFICATION_SERVICE);

​ 接下来需要使用一个Builder构造器来创建Notification对象。为了兼容低版本,support-v4库中提供了一个NotificationCompat类,使用这个类的构造器来创建Notification对象,就可以保证我们的程序在所以Android版本上都可以正常工作。

新版本-NotificationCompat.Builder()过时

​ 最近在看第二版《第一行代码 Android》,发现使用里面“通知”功能例程代码

NotificationCompat.Builder(this)会提示

在这里插入图片描述

‘Builde(android.content.Context)’ is deprecated

意思是不赞同使用该方法。在Android 8.0以上系统运行无效,而在Android 6.0系统可以正常运行。

​ 上网查资料发现,谷歌在Android 8.0对通知(Notification)功能做了改动,引入了通知渠道(Notification Channel)特性, Builder(context)被取而代之:

public Builder(@NonNull Context context, @NonNull String channelId)
对于Android 8.0以上系统需要开启通知通道(chanel):
//只在Android O之上需要渠道
if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){ 
//这里的第一个参数要和builder()中的的channelId一致
NotificationChannel notificationChannel = new
		NotificationChannel("defalut", "name",NotificationManager.IMPORTANCE_HIGH);    //创建通知通道  
manager.createNotificationChannel(notificationChannel);}

然后开始对通知的编码
Notification notification = new NotificationCompat.Builder(this,"defalut")   
		.setContentTitle("my title")        
		.setContentText("my text")        
		.setWhen(System.currentTimeMillis())     
        .setSmallIcon(R.mipmap.ic_launcher)  
		.setLargeIcon(BitmapFactory.decodeResource(getResources(),
				R.mipmap.ic_launcher))  
		.build();
manager.notify(2,notification);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值