欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

自定义 状态栏通知,状态栏通知

来源: 开发者 投稿于  被查看 25384 次 评论:35

自定义 状态栏通知,状态栏通知


我们怎么样才能在android中实现在状态栏里出现一个通知,这个对我们很主要。一个状态栏通知,会在系统的状态栏添加一个图标,并且在状态窗口添加一条信息。当用户点击这个信息时,android会发送一个intent请求,通常是启动一个已定义的activity。你可以添加声音、震动、闪屏给设备来提醒用户。

通常一个后台服务运行时,如果需要提醒用户一些事件、或者让用户反馈一些信息时,通常用到状态栏提醒。一个后台Service永远不会自己运行一个activity来接受用户交互,一般的,后台服务会添加一个状态栏通知来与用户进行交互。图一为状态栏,图二为我们下滑后看到的notification

我们现在就来说说它的基础知识,这样有对于我们的理解一个activity或者Service可以初始化状态栏通知,因为activity只有在活动状态下才能执行一些命令,所以你需要从一个service来建立状态通知。当用户启动了其他程序或者设备已经休眠时,通过这种方式,通知就可以在后台被创建。你要用到这两个类:Notification类和NotificationManager类。

Notification类来定义状态通知的属性,比如图标,提示信息,或者提示声音。NotificationManager是一个android系统的服务,来管理和运行所有通知的,他不能被实例化,你可以用getSystemService()方法获得他的句柄。当你想通知用户时,调用notify()方法即可。

创建一个菜单栏通知:

1.[图片] 095936m54mqn25xfsmmmqn.png

2.[图片] 100023ppffxpnwdqfxxxc6.png

3.[Java]代码

//1-获得MotificationManager的引用。

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);


//2-实例化Notification:

int icon = R.drawable.notification_icon;
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);

//3-定义Notification,如显示icon、目标intent等信息

Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

//4-传递给Manager.

private static final int HELLO_ID = 1;
mNotificationManager.notify(HELLO_ID, notification);

用户评论