Android -- Broadcast接收

Broadcast是Android四大组件之一,是一种广泛运用的在应用程序之间传输信息的机制。最经典的举例是:

“我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。”

  • 电台发送的内容是语音,而在Android中我们要发送的广播内容是一个Intent。这个Intent中可以携带我们要传送的数据。
  • 电台通过大功率的发射器发送内容,而在Android中则是通过sendBroadcast这个方法来发送。
  • 用户通过调整到具体的电台频率接受电台的内容。而在Android中要接受广播中的内容则是通过注册一个BroadCastReceiver来接收的。只有发送广播的action和接收广播的action相同,接受者才能接受这个广播。

我们拿代码说话

IP拨号的实现                                                                               

配置文件:

<receiver
            android:name="com.iidcdut.ipcall.OutCallReceiver">
            <intent-filter >
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
        </receiver>

onCreate里面主要是对SharePrefence配置,设置拨号时候要加的IP,然后BroadcastReceiver里面就是对要拨出去的号码进行加IP操作。

public class MainActivity extends Activity {

    private EditText edit_ipnumber;
    private SharedPreferences sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit_ipnumber = (EditText) findViewById(R.id.edit_ipnumber);
        sp = getSharedPreferences("config", MODE_PRIVATE);
        edit_ipnumber.setText(sp.getString("ipnumber", ""));

    }
    public void click(View view)
    {
        String ipnumber = edit_ipnumber.getText().toString();
        Editor editor = sp.edit();
        editor.putString("ipnumber", ipnumber);
        editor.commit();
        Toast.makeText(this, "设置OK", Toast.LENGTH_LONG).show();
    }

}

广播接收:

public class OutCallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("onReceive 发现新外拨电话");
        String number = getResultData();
        System.out.println("number="+number);

        SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
        String ipnumber  = sp.getString("ipnumber", "");
        String newnumber = ipnumber + number;

        setResultData(newnumber);

    }

}

短信拦截                                                                                    

像360的app里面就有垃圾短信拦截的功能,其实就是通过广播实现的。

配置文件:

<receiver android:name="com.yydcdut.smslistener.SmsReceiver">
            <intent-filter >
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

广播里面:

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("收到短信");

        Object[] pdus = (Object[]) intent.getExtras().get("pdus");
        for(Object pdu : pdus)
        {
            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
            String body = smsMessage.getMessageBody();
            String sender = smsMessage.getOriginatingAddress();
            System.out.println("body"+body);
            System.out.println("sender"+sender);

            abortBroadcast();
        }

    }

}

我是天王盖地虎的分割线                                                                 

源代码:http://pan.baidu.com/s/1dD1Qx01

利用广播IP拨号.zip

短信窃(和谐)听(和谐)器.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

Android -- Broadcast接收,布布扣,bubuko.com

时间: 2024-10-17 12:13:46

Android -- Broadcast接收的相关文章

Android Mms 接收信息流程

信息的接收工作是由底层来完成的,当有一个 新的信息时底层完成接收后会以Intent的方式来通知上层应用,信息的相关内容也包含在Intent当中,Android所支持的信息Intent都定 义在android.provider.Telephony.Intents里面. 短信的接收 短信接收,对于上层应用程序来讲就是要处理广播事件SMS_RECEIVED_ACTION,它是由Frameworks发出告诉上层有新的SMS已收 到.在Mms中,是由PrivilegedSmsReceiver来处理,它收到

android Broadcast 总结

1, 生命周期 在android官方文档中,推荐我们在onResume中进行 registerReceiver, 在onPause中进行unRegisterReceiver. 他们给出的理由是: If registering a receiver in your Activity.onResume() implementation, you should unregister it in Activity.onPause(). (You won't receive intents when pa

Android Broadcast Receiver 使用入门

Broadcast Receiver 的使用        1.Broadcast Receiver简介        2.Broadcast Receiver接收系统自带的广播        3.自定义广播        一.Broadcast Receiver简介        Android中的四大组件是 Activity.Service.Broadcast和Content Provider.而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递.那么Broadcas

Android Broadcast Receiver (广播接收者)

一.简介 Broadcast Receiver是广播接收器,接收自定义和系统的主播.也可以称为监听器. Broadcast Intent与Intent一样是通信的媒介,与Intent不同的是Broadcast Intent同时被多个组件接收. Broadcast Intent广播机制,广播源发出消息,通过AMS(Activity manager service),可以使多个组件接收同一个消息.与Broadcast Intent成对配合应用的是Broadcast Receiver广播接收器,用于,

Android Broadcast Security(转)

原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广播是源自于系统代码的──比如,通知时区改变.电池电量低.拍摄了一张照片或者用户改变了语言选项.应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态. 应用程序可以拥有任意数量的广播接收器以对所有它感兴趣的通知信息予以响应.所有的接收器均继承自BroadcastReceiv

从零开始学android&lt;BroadCast广播.四十五.&gt;

与Service相似,在android中还有一种运行在后台的4大组件之一,他就是broadCcast,但是他不用考虑是否有接受的对象,只需要考虑发送即可. 要想使用BroadCast我们可以使用两种方法 第一:将broadCcast配置到配置文件当中. 第二:将broadCcast与class文件进行绑定. 下面我们分别来进行说明. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

【案例分析】android广播接收不到原因分析

[概述] 本人正在学习android开发,最近在练习android自定义广播的时候,发现广播怎么也接收不到.甚是奇怪,看到网上也有很多同学遇到同样的问题.今天特别总结一下,以供大家参考.当然如有纰漏错误,望各位指正. 本次讨论的是广播访问的权限问题,对于显示或者隐式的问题,不在这里赘述. [版本] API版本为v21 [问题概述] 我先介绍一下我学习的例子.非常简单,通过一个button触发一个自定广播. 代码如下. 1 public class MyBroadcastReceiver exte

android Broadcast广播消息代码实现

我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiver(); IntentFilter filter = new IntentFilter(); //向过滤器中添加action filter.addAction("zcd.netanything"); //注册广播 getActivity().registerReceiver(myRece

android学习十四(android的接收短信)

收发短信是每个手机基本的操作,android手机当然也可以接收短信了.android系统提供了一系列的API,使得我们可以在自己的应用程序里接收和发送短信. 其实接收短信主要是利用我们前面学过的广播机制.当手机接收到一条短信的时候,系统会发出一条值为andorid.provider.Telephony.SMS_RECEIVED的广播,这条广播里携带着与短信相关的所有数据.每个应用程序都可以在广播接收器里对它进行监听,收到广播时在从中解析出短信的内容即可. 下面我们来个具体的例子实践下吧,新建一个