notification基本用法(一)

通知(Notification)是在下拉状态栏显示的信息,就像~~推送,简单介绍下notification

首先,它需要一个管理者,就是NotificationManager,可以用如下方式获取:

NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

然后,我们来获取Notification对象,有一个三个参数的Notification构造函数(貌似已经被抛弃,但是还可用,改成类似对话框的那种用Builder,具体以后研究下再更新),例如

Notification notification = new Notification(R.drawable.ic_launcher,"oh my god",System.currentTimeMillis());

第一个参数(int):icon,就是通知显示的图标id

第二个参数(CharSequence):给个字符串,当有通知时状态栏会显示的内容

第三个参数(long):通知创建的时间,单位毫秒

完成之后我们对通知的内容进行设置

notification.setLatestEventInfo(context,title,content,pendingIntent);

context就是上下文了,title则是通知的标题,content是内容(注意这是状态栏下拉后显示的,和构造函数的第二个参数显示的位置是不同的),至于pendingIntent在这里不多解释,不了解的可以百度下,它的参数中有个flag我查了下大神的解释,大概是这样的:

FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。
FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。
LAG_ONE_SHOT:该PendingIntent只作用一次。在该PendingIntent对象通过send()方法触发过后,PendingIntent将自动调用cancel()进行销毁,那么如果你再调用send() 方法的话,系统将会返回一个SendIntentException。
FLAG_UPDATE_CURRENT:如果系统中有一个和你描述的PendingIntent对等的PendingInent,那么系统将使用该PendingIntent对象,但是会使用新的Intent来更新之前 PendingIntent中的Intent对象数据,例如更新Intent中的Extras。

给上代码

Intent intent = new Intent(this,SecondActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);

notification.setLatestEventInfo(context,“my title“,“my content“,pendingIntent);

这样就实现了点击通知后会跳到SecondActivity

最后调用notify就可以了

notificationManager.notify(3,notification);

3是这个通知的id,当我们要用cancel方法干掉这个通知的时候需要作为参数传进去,像notificationManager.cancel(3);

这样一个简单的通知就实现了,还有一些我们可能会经常用到的,像通知的声音,震动,LED灯闪烁等等,也简单说一说

我们在得到notification对象之后可以按自己的意愿设置很多东西,如果都不想管可以设置为默认,即

notification.defaults = Notification.FLAG_DEFAULT_ALL;

设置振动需要一个long数组,其中奇数位是不震动时长(ms),偶数位是震动时长,当状态栏被下拉会终止振动

long[] mVibrate = {0,1000,2000,3000};

像上面这句,0代表停0s,即发出通知会马上振动,1000则为振动1s,2000为停止振动2s,3000为振动3s...以此类推

notification.vibrate = mVibrate;

设置好之后需要加上权限<uses-permission android:name="android.permission.VIBRATE"/>

设置声音需要uri,可以这样

Uri uri = Uri.fromFile("声音文件路径");或者Uri.parse("路径"):

notification.sound = uri;

还有LED,这个东西在我手机上试了好像并没什么效果,所以...

notification.ledARGB = Color.RED;

notification.ledOnMs = 1000;

notification.ledOffMs = 2000;

notification.flags = Notification.FLAG_SHOW_LIGHTS;

上面代码是让红色led灯亮1s然后暗2s这样闪

目前就学习了这么多,等学习到新知识会及时跟大家分享的,写的不太细,感谢大家看完微笑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值