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/p/3803556.html,如需转载请自行联系原作者

相关文章
|
4月前
|
XML Java Android开发
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
Android Studio App开发之监听系统广播Broadcast的讲解及实战(包括接收分钟到达广播、网络变更广播、定时管理器等 附源码)
77 0
|
4月前
|
XML 安全 Java
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
37 0
|
10月前
|
Android开发
Android:四大组件之 Broadcast(广播)
Broadcast 是一种广泛运用的、在应用程序之间传输信息的机制,Android 中的广播与传统意义上的电台广播类似,一个广播可以有任意个接收者,当然也可能不被任何应用程序所接收。广播机制是一个典型的发布-订阅模式,也就是观察者模式。
70 0
Android:四大组件之 Broadcast(广播)
|
11月前
|
存储 API Android开发
Android接收短信-createFromPdu
Android接收短信-createFromPdu
105 0
|
Java 开发工具 Android开发
RK3128 Android 7 BOX SDK 应用无法接收广播自启 + 眠休不黑屏问题
RK3128 Android 7 BOX SDK 应用无法接收广播自启 + 眠休不黑屏问题
387 0
|
Java Android开发
Android 7.1 多次重启后BOOT_COMPLETED广播接收变慢
Android 7.1 多次重启后BOOT_COMPLETED广播接收变慢
261 0
|
Android开发
安卓4.X系统 增加蓝牙接收文件类型
安卓4.X系统 增加蓝牙接收文件类型
112 0
|
开发工具 Android开发
Android App开发超实用实例 | ​Broadcast
介绍Broadcast的静态注册、动态注册及有序广播。 Broadcast(广播)分为发送者和接收者,可实现跨应用的消息传递。重启手机、闹钟、来电、接收短信等都会发出广播,通过BroadcastReceiver就可以接收广播并进行相应处理。
133 0
Android App开发超实用实例 | ​Broadcast
|
存储 消息中间件 Android开发
Android源码分析--广播的注册、发送和接收
Android源码分析--广播的注册、发送和接收
245 0
Android源码分析--广播的注册、发送和接收
|
JSON 网络协议 Android开发
【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )
181 0
【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 )