Android发送通知


安卓使用通知和用户交互是一个非常不错的选择,也是我们项目中经常用到的一个功能,所以今天有必要对这块做一下归纳。安卓发送的通知效果就是在状态栏显示一个通知的小图标,当下拉通知栏的时候可以看到整个消息的内容,同时在接收到消息的时候可以带声音、提示灯闪烁、震动、进度条等等,单用户点击通知的内容时也可以使用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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值