美文网首页
Android8.0Notification特性Notifica

Android8.0Notification特性Notifica

作者: 枫叶豆腐汤 | 来源:发表于2018-10-20 17:21 被阅读16次

    我们以前在做通知栏的时候直接Notification就行了,但是在高版本上不适用,查了资料改了部分东西那就是"NotificationChannel",当你的targetSdkVersion小于26将无法显示

    Android O引入了通知渠道(nitifition channel)用于用户统一处理,像V信QQ等社交软件一样
    推送三方SDK也同样把这个封装进去了,比如:友盟、极光等
    那我们先看一下系统自带的notifition

    Notification notification = new Notification();notification.icon = R.mipmap.ic_launcher; // 小图标notification.largeIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher_round); // 大图标notification.defaults = Notification.DEFAULT_ALL; // 设置默认的提示音、振动方式、灯光等notification.category = "Category";notification.when = System.currentTimeMillis(); // 设置通知发送的时间戳notification.tickerText = "Ticker Text"; // 设置通知首次弹出时,状态栏上显示的文本notification.flags = Notification.FLAG_AUTO_CANCEL; // 点击通知后通知在通知栏上消失notification.contentIntent = PendingIntent.getActivity(MainActivity.this, 0x001,        new Intent(MainActivity.this, TargetActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); // 设置通知的点击事件((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).notify(1, notification); // 发送系统通知
    
    <figure style="font-size: inherit; color: inherit; line-height: inherit; margin: 0px; padding: 0px;"> image

    <figcaption style="line-height: inherit; margin: 0px; padding: 0px; margin-top: 10px; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;"></figcaption>

    </figure>

    通过上面代码可以看到我们是无需API版本来控制,但是在高版本中无法显示,并且操作的少之又少,我们可以使用它的Builder来创建

     Notification notification = new NotificationCompat.Builder(context, Constant.Notification_Channel_Order_Id)                /**设置通知左边的大图标**/                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))                /**设置通知右边的小图标**/                .setSmallIcon(R.mipmap.ic_launcher)                /**通知首次出现在通知栏,带上升动画效果的**/                .setTicker("通知来了")                /**设置通知的标题**/                .setContentTitle("测试:通知的标题")                /**设置通知的内容**/                .setContentText("测试:通知的内容这是一个通知的内容")                /**通知产生的时间,会在通知信息里显示**/                .setWhen(System.currentTimeMillis())                /**设置该通知优先级**/                .setPriority(Notification.PRIORITY_DEFAULT)                /**设置这个标志当用户单击面板就可以让通知将自动取消**/                .setAutoCancel(true)                /**设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)**/                .setOngoing(false)                /**向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:**///                .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND)//                .setSound(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.ordermusic))                .setContentIntent(PendingIntent.getActivity(context, 1, new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT))                .build();        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);        deleteNoNumberNotification(notificationManager,"default");        /**发起通知**/        notificationManager.notify(1, notification);
    

    就这样就可以在高版本中使用了。假如我不喜欢现在的布局样式该怎么去自定义布局来显示我的通知

     NotificationCompat.Builder builder = new NotificationCompat.Builder(this);        builder.setSmallIcon(R.mipmap.ic_launcher);        RemoteViews rv = new RemoteViews(getPackageName(), R.layout.custom_notification);        rv.setTextViewText(R.id.tv, "泡沫");//修改自定义View中的歌名        //修改自定义View中的图片(两种方法)//        rv.setImageViewResource(R.id.iv,R.mipmap.ic_launcher);        rv.setImageViewBitmap(R.id.iv, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));        builder.setContent(rv);        builder.setSound(                Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.ordermusic));        Notification notification = builder.build();        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        notificationManager.notify(1, notification);
    

    接下来讲RemoteViews原理与推送通知跳转指定页面
    参考文章:https://www.jianshu.com/p/ca92797d925a

    关注公众号《Android技术大杂烩》

    image.png

    相关文章

      网友评论

          本文标题:Android8.0Notification特性Notifica

          本文链接:https://www.haomeiwen.com/subject/lqymzftx.html