Notification的用法

最近看《第一行代码》中关于通知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让用户无法手动清除通知,只能去点击。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容