自定义 状态栏通知,状态栏通知
投稿于 被查看 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);
用户评论