第二种BroadcastReceiver的使用方法

本文介绍了一个基于Android的通知和广播机制实例。通过自定义广播发送和接收,实现了通知的显示和清除功能。文章详细展示了主界面Activity的实现过程,包括菜单项的创建与响应、广播Intent的发送,以及两个广播接收器的注册与通知处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1,主界面类的实现:

public class ActivityMain extends Activity {

 public static final int ITEM0 = Menu.FIRST;
 public static final int ITEM1 = Menu.FIRST + 1;

 static final String ACTION_1 = "com.eoeandroid.action.NEW_BROADCAST_1";
 static final String ACTION_2 = "com.eoeandroid.action.NEW_BROADCAST_2";

 @Override
 protected void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  setContentView(R.layout.main);

 }

 public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);
  menu.add(0, ITEM0, 0, "显示Notification");
  menu.add(0, ITEM1, 0, "清除Notification");
  menu.findItem(ITEM1);
  return true;
 }

 public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
  case ITEM0:
   actionClickMenuItem1();
   break;
  case ITEM1:
   actionClickMenuItem2();
   break;

  }
  return true;
 }


 private void actionClickMenuItem1() {
  Intent intent = new Intent(ACTION_1);//生成Intent对象 参数为action(自定义的)
  sendBroadcast(intent);//广播Intent
 }


 private void actionClickMenuItem2() {
  Intent intent = new Intent(ACTION_2);
  sendBroadcast(intent);

 }

}

2.在AndroidManifest.xml的application 中注册:

<receiver android:name="EoeAndroidReceiver1">
   <intent-filter>
    <action
     android:name="com.eoeandroid.action.NEW_BROADCAST_1"/>
   </intent-filter>
  </receiver>
  <receiver android:name="EoeAndroidReceiver2">
   <intent-filter>
    <action
     android:name="com.eoeandroid.action.NEW_BROADCAST_2"/>
   </intent-filter>
  </receiver>

3,负责2种广播接收类

一:

public class EoeAndroidReceiver1 extends BroadcastReceiver {
 Context context;
 public static int NOTIFICATION_ID = 21321;

 @Override
 public void onReceive(Context context, Intent intent) {
  this.context = context;
  showNotification();
 }

 private void showNotification() {

  NotificationManager notificationManager = (NotificationManager) context
    .getSystemService(android.content.Context.NOTIFICATION_SERVICE);
  Notification notification = new Notification(R.drawable.icon,
    "在EoeAndroidReceiver1中", System.currentTimeMillis());

  PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
    new Intent(context, ActivityMain.class), 0);
  notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,
    contentIntent);
  notificationManager.notify(NOTIFICATION_ID, notification);
 }
}

二:

import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class EoeAndroidReceiver2 extends BroadcastReceiver {
 Context context;

 @Override
 public void onReceive(Context context, Intent intent) {
  // TODO Auto-generated method stub
  this.context = context;
  DeleteNotification();
 }

 private void DeleteNotification() {
  
  NotificationManager notificationManager = (NotificationManager) context
    .getSystemService(android.content.Context.NOTIFICATION_SERVICE);
  notificationManager.cancel(EoeAndroidReceiver1.NOTIFICATION_ID);
 
 }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值