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条通知。

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

时间: 2024-10-04 20:11:11

021_01NotificationManager应用的相关文章