Android发送通知

来源:互联网 发布:matlab编程入门教程 编辑:程序博客网 时间:2024/06/05 00:49


安卓使用通知和用户交互是一个非常不错的选择,也是我们项目中经常用到的一个功能,所以今天有必要对这块做一下归纳。安卓发送的通知效果就是在状态栏显示一个通知的小图标,当下拉通知栏的时候可以看到整个消息的内容,同时在接收到消息的时候可以带声音、提示灯闪烁、震动、进度条等等,单用户点击通知的内容时也可以使用Intent干任何你想做的事,比如打开一个app,打开指定的网页,拨打电话等等,通知的一般样式如下图所示


这是一个普通的通知,标号分别代表下面的含义:

1、大图标

2、标题

3、内容

4、文本摘要

5、通知的时间

6、小图标(当通知栏没有下拉的时候就是现实这个图标)

通知分为普通通知、自定义通知、特殊样式的通知。其中特殊样式的通知分为三类:NotificationCompat.InboxStyle、NotificationCompat.BigTextStyle、NotificationCompat.BigPictureStyle,他们与普通通知的区别就是风格不一样,其余的都是一样的。如果在使用通知的时候需要闪灯和震动,需要添加对应的权限:

<span style="font-size:10px;">    <uses-permission android:name="android.permission.FLASHLIGHT" />    <uses-permission android:name="android.permission.VIBRATE" /></span>

要发送一个通知,需要以下几个步骤:

1、使用系统服务获取notificationManager对象

2、使用notification或者notification.builder构建一个消息对象

3、使用notificationManager.notify()把消息发送出去


获取notificationmanager和notification.builder对象:

<span style="font-size:10px;"> NotificationCompat.Builder</span>
<span style="font-size:10px;">// 获取消息管理者notim = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);// 获取到兼容版本的消息对象notiBuilder = new NotificationCompat.Builder(this);</span>

对notification.builder进行设置:

notiBuilder// 点击消息后是否会自动取消,此设置必须要设置contentintent才有效.setAutoCancel(false)// 三项必设置.setContentTitle("消息的标题").setContentText("消息的内容").setSmallIcon(R.drawable.ic_launcher)// 文本的内容.setContentInfo("我是ContentInfo")// 指示灯闪烁.setLights(Color.LTGRAY, 5000, 5000)// 消息到达的时候上面滚动的文字.setTicker("你有一封新的短消息~请注意查收!")// 设置Intent跳转.setContentIntent(pIntent)// 设置消息到达的时间.setWhen(System.currentTimeMillis() + 100000000)// 震动.setVibrate(new long[] { 500, 500, 1000, 500 })// 设置大图标.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bigpic));

之后调用notificationmanager的notify方法把消息发送出去。

ok,上面是发送一个普通的消息,我先贴上我的demo截图,然后说下发送特殊样式消息和自定义消息。


先来NotificationCompat.BigPictureStyle发送的特殊消息,其余的样式使用方法类似,就不再贴出了,如果不会可以看下载我的Demo查看。

代码:

<span style="font-size:10px;">// 发送大图片消息public void sendPicNoti(View view) {// 得到样式对象NotificationCompat.BigPictureStyle bs = new NotificationCompat.BigPictureStyle(notiBuilder);// 对样式设置bs.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bigicon)).bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.bigpic)).setBigContentTitle("BigContentTitle").setSummaryText("SummaryText");setNotiInfo();// 发送消息notim.notify(10, notiBuilder.build());}</span>

发送一个自定义消息的代码:

<span style="font-size:10px;">// 发送自定义消息public void sendCustom(View view) {RemoteViews views = new RemoteViews(getPackageName(), R.layout.custom_noti);views.setImageViewResource(R.id.imgv, R.drawable.bigpic);views.setTextViewText(R.id.txtv, "我是自定义视图");Notification noti = new Notification(R.drawable.ic_launcher, "你有一封新的短消息", System.currentTimeMillis());noti.contentView = views;notim.notify(3, noti);}</span>

ok,消息的使用大概就是这样的,如果需要显示一个进度条,可以设置builder.setProgress(max, progress, indeterminate),前两个分别为最大进度和当前进度,第三个参数为这个进度条是否显示具体的进度。最后附上我的demo:demo下载

扫描关注我的微信公众号:




1 0
原创粉丝点击