Notification和NotificationManager的使用(二)

前一篇中,使用Notification和NotificationManager来显示通知,

这里,是用Notification和NotificationManager BroadCast Receiver

定义一个MainActivity发出广播,定义一个MyReceiver接收广播,当接收到广播后启动另一个DisplayActivity,该类中通过Notification和NotificationManager来可视化显示广播通知

MainActivity.java

[java]  view plain copy
  1. private Button btn_send;  
  2.     //定义Broadcast Receiver action  
  3.     private static final String MY_ACTION="com.ex.action.MY_ACTION";  
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.         btn_send=(Button)findViewById(R.id.btnsend);  
  9.         btn_send.setOnClickListener(new OnClickListener(){  
  10.   
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 // TODO Auto-generated method stub  
  14.                 Intent intent = new Intent();  
  15.                 intent.setAction(MY_ACTION);  
  16.                 sendBroadcast(intent);  
  17.             }  
  18.               
  19.         });  
  20.     }  


 

main.xml

[html]  view plain copy
  1. <Button  
  2.     android:id="@+id/btnsend"    
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"   
  5.     android:text="发出广播"  
  6.     />  


 

MyReceiver.java

[java]  view plain copy
  1. package com.ex;  
  2.   
  3. import android.content.BroadcastReceiver;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6.   
  7. public class MyReceiver extends BroadcastReceiver {  
  8.   
  9.     @Override  
  10.     public void onReceive(Context context, Intent intent) {  
  11.         // TODO Auto-generated method stub  
  12.         Intent i = new Intent();  
  13.         //在新的任务中启动Activity  
  14.         i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  15.         //设置Intent组件的名称  
  16.         i.setClass(context,DisplayActivity.class);  
  17.         //启动Activity显示通知  
  18.         context.startActivity(i);  
  19.     }  
  20.   
  21. }  


 

DisplayActivity.java

[java]  view plain copy
  1. package com.ex;  
  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. import android.view.View.OnClickListener;  
  11. import android.widget.Button;  
  12.   
  13. public class DisplayActivity  extends Activity {  
  14.     private Button btn_cancel;  
  15.     private Notification n;//声明Notification  
  16.     private NotificationManager nm;//声明NotificationManager  
  17.     private static final int ID=1;//Notification标识ID  
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         // TODO Auto-generated method stub  
  21.         super.onCreate(savedInstanceState);  
  22.         setContentView(R.layout.main2);  
  23.         //获得NotificationManager实例  
  24.         nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);  
  25.         //实例化Notification  
  26.     //  n = new Notification();  
  27.         //设置显示图标,该图标会在状态栏显示  
  28.         int icon = R.drawable.notification;  
  29.         //设置显示提示信息,也会在状态栏显示  
  30.         String tickerText = "Text Notification";  
  31.         //显示时间  
  32.         long when = System.currentTimeMillis();  
  33.         /*n.icon=icon; 
  34.         n.tickerText=tickerText; 
  35.         n.when = when;*/  
  36.        n = new Notification(icon,tickerText,when);//这句是设置了显示图标,提示信息,时间  
  37.          
  38.        Intent intent = new Intent(this,MainActivity.class);  
  39.        PendingIntent pi = PendingIntent.getActivity(this0, intent, 0);  
  40.        n.setLatestEventInfo(this"My Title""My Content", pi);//设置事件信息  
  41.        nm.notify(ID,n);//发出通知  
  42.          
  43.        btn_cancel = (Button)findViewById(R.id.btncancel);  
  44.        btn_cancel.setOnClickListener(new OnClickListener(){  
  45.   
  46.         @Override  
  47.         public void onClick(View v) {  
  48.             // TODO Auto-generated method stub  
  49.             nm.cancel(ID);  
  50.         }  
  51.              
  52.        });  
  53.          
  54.           
  55.           
  56.     }  
  57.       
  58.       
  59. }  


 

main2.xml

[html]  view plain copy
  1. <Button  
  2.     android:id="@+id/btncancel"    
  3.     android:layout_width="wrap_content"   
  4.     android:layout_height="wrap_content"   
  5.     android:text="取消通知"  
  6.     />  


AndroidManifest.xml

[html]  view plain copy
  1.  <activity android:name=".DisplayActivity"  
  2.                      android:label="@string/app_name">  
  3.                      <intent-filter>  
  4.     
  5.           </intent-filter>  
  6.                      </activity>  
  7.           
  8. <service  android:name="MYReceiver">  
  9. <intent-filter>  
  10.               <action android:name="com.ex.action.MY_ACTION" />  
  11.               </intent-filter>  
  12. </service>  


总结:

对获得通知的过程

首先,//获得NotificationManager实例
  nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

其次,对状态栏的属性设置,即发出通知的一些属性,可以有两种方式,

一种是

[java]  view plain copy
  1. //实例化Notification  
  2.         n = new Notification();  
  3.         //设置显示图标,该图标会在状态栏显示  
  4.         int icon = n.icon=R.drawable.notification;  
  5.         //设置显示提示信息,也会在状态栏显示  
  6.         String tickerText = "Text Notification";  
  7.         //显示时间  
  8.         long when = System.currentTimeMillis();  
  9.         n.icon=icon;  
  10.         n.tickerText=tickerText;  
  11.         n.when = when;  



第二种是

[java]  view plain copy
  1. //设置显示图标,该图标会在状态栏显示  
  2.         int icon =R.drawable.notification;  
  3.         //设置显示提示信息,也会在状态栏显示  
  4.         String tickerText = "Text Notification";  
  5.         //显示时间  
  6.         long when = System.currentTimeMillis();                                                                          n = new Notification(icon,tickerText,when);//这句是设置了显示图标,提示信息,时间  


最后,

[java]  view plain copy
  1. Intent intent = new Intent(this,MainActivity.class);  
  2.        PendingIntent pi = PendingIntent.getActivity(this0, intent, 0);  
  3.        n.setLatestEventInfo(this"My Title""My Content", pi);//设置事件信息  
  4.        nm.notify(ID,n);//发出通知  


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值