android基础学习(9)-------notification提醒

本文详细介绍了Notification的两种表现方式及实现步骤,并分享了如何使Notification像AndroidQQ一样出现于‘正在运行的’栏目下的技巧。

最近写了一个notification的demo,搞了半天怎么都弹不出自己的想要的activity,最后发现竟然是在manifest.xml里面没有注册这个activity,崩溃。。。。。。!


notification其实挺简单的,照着固定模式写就行了,也许是我研究的不够深入吧。

notification有两种表现方式,第一个就是以默认的布局展示:

//定义一个notificationmanager,它的作用就是显示和取消notification。。easy

NotificationManager m_NotificationManager=(NotificationManager)context.getSystemService(NOTIFICATION_SERVICE);

Notification  m_Notification=new Notification();

//设置提醒icon  文字   声音

m_Notification.icon=R.drawable.notice;

m_Notification.tickerText=message;

m_Notification.defaults=Notification.DEFAULT_SOUND;

//点击notification时候发送的打开acitivity的intent

Intent m_Intent=new Intent(context,ShowWeb.class);

//需要打开一个新的activity时候,必须要设定Intent.FLAG_ACTIVITY_NEW_TASK

 m_Intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);

 PendingIntent pi = PendingIntent.getActivity(context, 0, m_Intent, PendingIntent.FLAG_CANCEL_CURRENT);

//下面这行是打开setting的

//PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent("android.settings.SETTINGS"), PendingIntent.FLAG_CANCEL_CURRENT);

m_Notification.setLatestEventInfo(context, "foolfrog", "this is a test",pi );

//下面这行是设定自动消失,即点击notification之后,就消失

 //m_Notification.flags |= Notification.FLAG_AUTO_CANCEL;

//弹出。。。第一个参数是自己设定的一个ID,取消的时候也用到这个ID。比如没有设定自动消失,可以在打开的acitivity里面

写:m_NotificationManager.cancel(0);

m_NotificationManager.notify(0,m_Notification);



第二个就是自定义了:(偷懒,以下是网摘)

如何使自己的Notification像Android QQ一样能出现在 “正在运行的”栏目下面

其实很简单,只需设置Notification.flags = Notification.FLAG_ONGOING_EVENT;便可以了。

如何改变 Notification 在“正在运行的”栏目下面的布局

创建 RemoteViews 并赋给 Notification.contentView ,再把 PendingIntent 赋给 Notification.contentIntent 便可以了,如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
PendingIntent contentIntent = PendingIntent.getActivity(
     arg0.getContext(),
     R.string.app_name,
     i,
     PendingIntent.FLAG_UPDATE_CURRENT);
             
RemoteViews rv = new RemoteViews(Main. this .getPackageName(), R.layout.notification_view);
rv.setImageViewResource(R.id.image, R.drawable.chat);
rv.setTextViewText(R.id.text, "Hello,there,I'm john." );
n.contentView = rv;
n.contentIntent = contentIntent;
 
nm.notify(R.string.app_name, n);
注意,如果使用了contentView,那么便不要使用Notification.setLatestEventInfo。如果setLatestEventInfo在赋给 Notification.contentView 的代码之后,那么contentView的效果将被覆盖,显示的便是 setLatestEventInfo 的效果;如果 setLatestEventInfo 在 Notification.contentView 的代码之前,那么显示的便是 Notification.contentView 的效果,也就是说不管你想要setLatestEventInfo 或 contentView 的自定义效果,请保证始终只有一句设置代码,因为在最后一句绑定的时候,之前的设置contentView或setLatestEventInfo的代码都是完全没有必要的







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值