Notification和NotificationManager的使用(二)

来源:互联网 发布:java多线程查询数据库 编辑:程序博客网 时间:2024/06/08 18:58


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

这里,是用Notification和NotificationManager BroadCast Receiver

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

MainActivity.java

private Button btn_send;//定义Broadcast Receiver actionprivate static final String MY_ACTION="com.ex.action.MY_ACTION";@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        btn_send=(Button)findViewById(R.id.btnsend);        btn_send.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();intent.setAction(MY_ACTION);sendBroadcast(intent);}                });    }


 

main.xml

<Buttonandroid:id="@+id/btnsend"      android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="发出广播"    />


 

MyReceiver.java

package com.ex;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubIntent i = new Intent();//在新的任务中启动Activityi.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//设置Intent组件的名称i.setClass(context,DisplayActivity.class);//启动Activity显示通知context.startActivity(i);}}


 

DisplayActivity.java

package com.ex;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class DisplayActivity  extends Activity {private Button btn_cancel;private Notification n;//声明Notificationprivate NotificationManager nm;//声明NotificationManagerprivate static final int ID=1;//Notification标识ID@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main2);//获得NotificationManager实例nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);//实例化Notification//n = new Notification();//设置显示图标,该图标会在状态栏显示int icon = R.drawable.notification;//设置显示提示信息,也会在状态栏显示String tickerText = "Text Notification";//显示时间long when = System.currentTimeMillis();/*n.icon=icon;n.tickerText=tickerText;n.when = when;*/   n = new Notification(icon,tickerText,when);//这句是设置了显示图标,提示信息,时间      Intent intent = new Intent(this,MainActivity.class);   PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);   n.setLatestEventInfo(this, "My Title", "My Content", pi);//设置事件信息   nm.notify(ID,n);//发出通知      btn_cancel = (Button)findViewById(R.id.btncancel);   btn_cancel.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubnm.cancel(ID);}      });   }}


 

main2.xml

<Buttonandroid:id="@+id/btncancel"      android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="取消通知"    />


AndroidManifest.xml

   <activity android:name=".DisplayActivity"           android:label="@string/app_name">           <intent-filter>                </intent-filter>           </activity>          <service  android:name="MYReceiver"><intent-filter>                <action android:name="com.ex.action.MY_ACTION" />                </intent-filter></service>


总结:

对获得通知的过程

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

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

一种是

//实例化Notificationn = new Notification();//设置显示图标,该图标会在状态栏显示int icon = n.icon=R.drawable.notification;//设置显示提示信息,也会在状态栏显示String tickerText = "Text Notification";//显示时间long when = System.currentTimeMillis();n.icon=icon;n.tickerText=tickerText;n.when = when;



第二种是

//设置显示图标,该图标会在状态栏显示int icon =R.drawable.notification;//设置显示提示信息,也会在状态栏显示String tickerText = "Text Notification";//显示时间long when = System.currentTimeMillis();                                                                          n = new Notification(icon,tickerText,when);//这句是设置了显示图标,提示信息,时间


最后,

Intent intent = new Intent(this,MainActivity.class);   PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);   n.setLatestEventInfo(this, "My Title", "My Content", pi);//设置事件信息   nm.notify(ID,n);//发出通知


 

原创粉丝点击