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

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

    物随心转,境由心造,一切烦恼皆由心生。
  • 相关阅读:
    Java中HashMap底层实现原理(JDK1.8)源码分析
    java io系列01之 "目录"
    数据结构与算法系列 目录
    Java 集合系列目录(Category)
    ls参数
    在PATH路径中添加新的路径
    目录相关的操作
    chmod
    属性类型
    ls -al
  • 原文地址:https://www.cnblogs.com/woodrow2015/p/4547666.html
Copyright © 2020-2023  润新知