美文网首页Android初学者
Notification的用法

Notification的用法

作者: YueDev | 来源:发表于2016-06-03 23:17 被阅读436次

    最近看《第一行代码》中关于通知Notification的部分,书中的例子在现在的Android studio中已经是不提倡,推荐用Builder代替,于是简单的试了试Notification.Builder,简单总结一下。

    利用Notification.Builder获取Notification类的实例

    Notification.Builder的简单用法如下:

    Notification.Builder builder = new Notification.Builder(MainActivity.this);
    builder.setTicker("This is a trcker");//通知栏的预览文字
    builder.setSmallIcon(R.mipmap.xxx);//图标
    builder.setContentTitle("This is title");//通知的标题
    builder.setCOntentText("This is content");//通知的内容
    builder.setWhen(System.currentTimeMillis());//设置通知时间为当前系统时间
    Notification notification = builder.build();//获取Notification的实例
    

    以上是一个简单的安卓通知样式,没什么好说的,setWhen()方法默认显示通知发出的时间,不写也可以。

    利用NotificationManager发出通知

    我们可以利用getSystemService( )方法来启动通知管理器。然后利用通知管理器的notify( )方法发出通知.notify( )方法有两个参数。第一个参数int类型是通知的编号,一般来说每个通知不同即可,第二个参数即上边我们构造的notification实例。

    NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(1, notification);
    

    通知的清除可以在活动中用manager.cancel(1)来清除。

    manager.cancel(1);
    

    通知的高级用法

    一般来说,notification和builder都可以设置通知的铃声提示灯和振动,这里我稍微写写builder的几个方法,notification的用法差不多,可以看《第一行代码》

    builder.setVibrate(new long[] {0, 1000, 1000, 1000});//为通知设置震动,4个时间参数,单位为毫秒。
    //第1个参数是延迟振动时间,第2个是振动时间,第3个是静止时间,第4个是静止后又振动的时间
    //上边这个振动就是收到通知后,手机立刻振动1秒,停止振动1秒,接着再振动1秒。
    Uri soundUri = Uri.fromFile("路径");
    builder.setSound(soundUri);//设置指定路径下的通知提示音
    
    builder.setDefaults(Notification.DEFAULT_ALL);//通知的提示音铃声振动全部采用系统默认值。
    //也可以单独设定Notification.DEFAULT_LIGHTS或Notification.DEFAULT_SOUND或Notification.DEFAULT_VIBRATE
    //设置默认后,自定义的铃声和振动都无效。
    

    通知的点击事件

    通知的点击事件通过PendingIntent类实现。

    1. 首先新建个PendingIntent的实例
    Intent intent = new Intent(this, NoticeActivity.class);//点击通知后启动NoticeActivity
    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    //4个构造参数,第1个是Context,第2个一般用不到,写0
    //第3个就是上一行的intent,第4个是PendingIntent的行为模式,一般用PendingIntent.FLAG_CANCEL_CURRENT
    

    2.利用builder添加PendingIntent实例
    builder有三个不同的添加PendingIntent的方法:

    builder.setContentIntent(pi);
    builder.setDeleteIntent(pi);
    builder.setFullScreenIntent(pi, true);
    

    第一个方法就是最常用的,点击通知后进入新的活动。
    第二个方法是用户清除通知后触发,进入新的活动。
    第三个方法类似来电,收到通知后立刻在当前屏幕显示,这个方法显示的通知按照上边的写法无法启动NoticeActivity活动,原因我也不清楚= =,所以一般推荐用第一个方法添加PendingIntent。
    另外,通知点击后默认不会自动清除,需要在NoticeActivity用manager.cancel(1)这个方法清除,或者在Notification里添加如下flag:

    notification.flags = Notification.FLAG_AUTO_CANCEL;//点击通知后,通知会自动清除
    notification.flags = Notification.FLAG_NO_CLEAR;//这个FLAG让用户无法手动清除通知,只能去点击。
    

    相关文章

      网友评论

        本文标题:Notification的用法

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