021_01NotificationManager应用

  Broadcast Receiver组件并没有提供可视化界面来显示广播信息,而Notifaction和NotifactionManager可以实现可视化的信息显示,通过它们可以显示广播信息的内容以及图标和震动等信息(在状态栏上)

  NotificationManager:是状态栏通知的管理类,负责发通知、清楚通知等。
  NotificationManager是一个系统Service,必须通过getSystemService()方法来获取。
  NotificationManager nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。

 1 package com.example.day21_01notification;
 2 
 3 import android.app.Activity;
 4 import android.app.Notification;
 5 import android.app.NotificationManager;
 6 import android.app.PendingIntent;
 7 import android.content.Intent;
 8 import android.os.Bundle;
 9 import android.view.View;
10 
11 public class MainActivity extends Activity {
12 
13     private NotificationManager nm;
14     @Override
15     protected void onCreate(Bundle savedInstanceState) {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.activity_main);
18     }
19      
20     public void show_notification(View v){    
21         nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);        
22         //构建一个通知
23         Notification notification = new Notification( 
24                  R.drawable.ic_launcher,  //  通知栏的图标
25                  "新天气预报到来",  // 通知的内容 tickerText 显示在状态栏
26                  System.currentTimeMillis()); // 通知的时间
27          
28         Intent intent = new Intent();
29         intent.setAction("com.cskaoyan.moji");
30         
31         PendingIntent pendingIntent = PendingIntent.getActivity(this, 100, intent, Notification.FLAG_AUTO_CANCEL);
32 
33         //注意,不设置setLatestEventInfo就直接调用notify系统会报错,因为很多参数都没有初始化。
34         notification.setLatestEventInfo(this,
35                 "暴雨警报", //显示在下拉的状态栏里面 (通知的上面)
36                 "今天14:00深圳市发布暴雨红色预警,建议学校停课,工厂停工。", //显示在下拉的状态栏里面 (通知的正文)
37                 pendingIntent);
38         
39         //可以设置是否有声音 是否震动 是否闪灯
40         notification.defaults=Notification.DEFAULT_SOUND;
41         
42         //用户无法手动清除,可以使用代码在你的应用内清除
43         //notification.flags = Notification.FLAG_NO_CLEAR;
44         notification.flags = Notification.FLAG_FOREGROUND_SERVICE;
45         nm.notify(10, notification); //使用nm来显示通知
46         
47     }
48     
49     public void cancle_notification(View v){    
50         nm.cancel(10);  //清除你的通知        
51     }
52     
53     /**
54      * 新版GOOGle建议的notification使用方式
55      * @param v
56      */
57     public void show_notification2(View v){        
58         nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
59         Intent intent = new Intent();
60         intent.setAction("com.cskaoyan.moji");        
61         PendingIntent pendingIntent = PendingIntent.getActivity(this, 100, intent, Notification.FLAG_AUTO_CANCEL);
62         
63         Notification noti = new Notification.Builder(this)
64                    .setContentTitle("凤姐" ) 
65                    .setContentText("今晚一起吃饭?")  
66                    .setSmallIcon(R.drawable.qq)
67                    .setTicker("你有新消息")
68                    .setContentIntent(pendingIntent)
69                    .build();    
70         nm.notify(11, noti);
71     }
72     
73     public void cancle_notification2(View v){        
74         nm.cancel(11);   
75         //清除你的通知    
76     }
77 }

 

 1 package com.example.day21_01notification;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.widget.TextView;
 6 
 7 public class SecondActivity extends Activity {
 8  
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         // TODO Auto-generated method stub
12         super.onCreate(savedInstanceState);    
13         TextView tv = new TextView(this);
14         tv.setText("我是墨迹天气的页面。欢迎过来看天气!");
15         setContentView(tv);
16     }
17 }

 

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.day21_01notification"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="16"
 9         android:targetSdkVersion="21" />
10 
11     <application
12         android:allowBackup="true"
13         android:icon="@drawable/ic_launcher"
14         android:label="@string/app_name"
15         android:theme="@style/AppTheme" >
16         <activity
17             android:name=".MainActivity"
18             android:label="@string/app_name" >
19             <intent-filter>
20                 <action android:name="android.intent.action.MAIN" />
21 
22                 <category android:name="android.intent.category.LAUNCHER" />
23             </intent-filter>
24         </activity>
25         <activity android:name=".SecondActivity">
26             <intent-filter >
27                 <action android:name="com.cskaoyan.moji"/>
28                 <category android:name="android.intent.category.DEFAULT"/>
29             </intent-filter>
30             
31         </activity>
32     </application>
33 
34 </manifest>

 

AndroidManifest中注册SecondActivity

1         <activity android:name=".SecondActivity">
2             <intent-filter >
3                 <action android:name="com.cskaoyan.moji"/>
4                 <category android:name="android.intent.category.DEFAULT"/>
5             </intent-filter>
6             
7         </activity>

 

当点击“显示通知2”,状态栏会有“你有新消息”提醒,如下图:

 

点击“显示通知”和“显示通知2”后,在下拉菜单可以看到2条通知。

 

点击任意一个通知,页面变跳转到如下界面。

posted @ 2015-06-02 21:09  woodrow_woo  阅读(146)  评论(0编辑  收藏  举报