Android 广播接收者

安卓实现广播有两种方式

方式1:动态注册

方式2:配置文件注册

下面我们来实现方式1,动态注册

首先我们来定义一个接收者,继承BroadcastReceiver ,并且重写onReceive方法,当指定的广播发出,系统自动调用onReceive方法。

public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent)
    {
        //得到广播中传递的数据
        String data = intent.getStringExtra("data");
        Log.i("shxtapp","接收到数据:"+data);
    }
}

接下来我们注册这个广播接收者,这里我们指定了广播的action是"setAction",只有系统发出这个广播,才能被我们接收。

MyReceiver receiveBroadCast = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("setAction"); //只有持有相同的action的接受者才能接收此广播
registerReceiver(receiveBroadCast, filter);
Log.i("shxtapp","注册接收者完毕");

接下来我们模拟发出广播

Intent intent = new Intent();  //Itent就是我们要发送的内容
intent.putExtra("data", "传递的数据");
intent.setAction("setAction");
//设置你这个广播的action,只有和这个action一样的接受者才能接受者才能接收广播
sendBroadcast(intent);   //发送广播
 Log.i("shxtapp","发送完毕");

当我们发出广播,我们定义的广播接收者就接到我们的广播,并且能够获取到我们传递的数据。



方式2:配置文件注册

接下来我们试一试,如何同通过配置文件来注册一个广播接收者

同样的,还是先定义一个广播接收者,这一次我们接收系统打电话的广播信息。

public class MyReceiver2 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String phoneNumber = getResultData();//获取电话号码
        Log.i("shxtapp", "call OUT:" + phoneNumber);

    }
}

然后再AndroidManifest.xml文件中做如下配置,在application标签中,和activity同级即可。

<receiver android:name="com.ccshxt.shxt.MyReceiver2">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
            </intent-filter>
</receiver>

该配置指定这个广播接收者接收向外呼叫的电话的广播,即打电话的时候系统发出广播,我们就能接收到了。

同时我们要配置权限<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>,没有权限就不能进行电话相关的操作了。

这两种方法定义的广播接收者都能接受指定的广播,但有些不同。

方法1动态注册的广播接收者只能在应用激活的时候生效,如果应用被关闭则不起作用。

方法2配置的广播接收者在任何时候都生效,即使应用被关闭。

是不是很简单,小伙伴们来试一试。

时间: 2024-10-18 08:13:00

Android 广播接收者的相关文章

Android广播接收者

其实,在什么是广播的第一句就已经说明了广播有什么用了.对了,笼统一点讲就是用来传输数据的.具体一点说就是:1. 实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播.          典型的应用就是android自带的短信,电话等等广播,只要我们实现了他们的action的广播,那么我们就能接收他们的数据了,          以便做出一些处理.比如说拦截系统短信,拦截骚扰电话等等2.起到了一个通知的作用,比如在service中要通知主程序,更新主

Android 广播接收者 BroadcastReceiver

Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通信. 从实现原理看上,Andro

[android] 代码注册广播接收者&amp;利用广播调用服务的方法

利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent对象,通过new出来 调用Intent对象的setAction()方法,参数:一般就是包名 调用sendBroadcast(intebt)方法,发送广播,参数:Intent对象 服务里面 新建一个MyService类继承系统的Service类 添加一个自定义的服务的方法callServiceMeth

Android入门:广播发送者与广播接收者

参考: Android入门:广播发送者与广播接收者 - xiazdong - CSDN博客http://blog.csdn.net/xiazdong/article/details/7768807 一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据:

android 49 广播接收者中启动其他组件

main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id

Android简易实战教程--第二十话《通过广播接收者,对拨打电话外加ip号》

没睡着觉,起来更篇文章吧哈哈!首先祝贺李宗伟击败我丹,虽然我是支持我丹的,但是他也不容易哈哈,值得尊敬的人!切入正题:这一篇来介绍个自定义广播接收者. 通常我们在外拨电话的时候,一般为使用网络电话.如果电话号码是某种类型的电话,会自动在前面加上ip号.从而节省费用.今天这一篇就模拟ip拨号.这个功能,是通过广播接收者来实现的.自定义广播接收者,"监听"外拨电话时候系统发出的广播(系统对我们注册的广播大喊:"亲爱的,我来了!"),收到信息后,给外拨电话前缀价格ip号码

android中代码形式注册广播接收者

   /**   * 自定义内部类实现广播接受者    *    * @author Byron   *    */  class OutCallReceiver extends BroadcastReceiver {   @Override   public void onReceive(Context context, Intent intent) {       }  }      // 用代码去注册广播接收者   receiver = new OutCallReceiver();   I

Android开发之旅(二)服务生命周期和广播接收者生命周期

引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生命周期将讨论活动.服务.广播接收者的生命周期——包括在生命周期中他们可能的状态.通知状态改变的方法.及这些状态的组件寄宿的进程被终结和实例被销毁的可能性. 上篇Android开发之旅:组件生命周期(一)讲解了论活动的生命周期及他们可能的状态.通知状态改变的方法.本篇将介绍服务和广播接收者的生命周期:

Android四大组件之广播接收者

介绍如何创建广播.如何发送一个无序广播和有序广播.以及监听短信以及监听呼出电话(当我们发短信和打电话,系统就会发一个广播,我们可以拦截此广播进行监听短信以及监听呼出电话). 定义广播接收者 1.定义类继承BroadcastReceiver,重写onReceive方法 2.当接收到匹配广播之后就会执行onReceive方法 3.清单文件中声明<receiver>,需要在其中配置<intent-filter>指定接收广播的动作和类型 4.BroadcastReceiver除了在清单文件