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

更多相关文章

  1. 这是一篇描述 Broadcasts 的文章
  2. Android(安卓)Dialog使用
  3. Android(安卓)AccessibilityService --- 小白视角
  4. BAT大咖助力Android面试4-Broadcast面试详解
  5. Android(安卓)监听短信(同时监听广播和数据库)
  6. Android客户端与PC服务端、android服务端通过WiFi通信
  7. Android监听手机电话状态与发送邮件通知来电号码的方法(基于Phon
  8. Android实现一键清除输入内容和震动效果的EditText
  9. Android(安卓)监听开机广播实现应用开机自启动

随机推荐

  1. android rootfs
  2. Android通过RSA加密解密实现License
  3. Ubuntu 12.04 64bit 配置完android 5.0编
  4. Android的一个技巧
  5. Android App兼容8.0和9.0
  6. Android WheelView(滑轮组件)使用
  7. android解析xml文件的方式(其三)
  8. Android面试题整理(一)
  9. cocos2d-x 2.X for Android中需要使用Ope
  10. Android——编译odex保护