必须使用发送有序广播方法,广播优先级才有效:
findViewById(R.id.button1).setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent();
intent.setAction("com.example.aex56");
intent.putExtra("key", "value");
sendOrderedBroadcast(intent, null);//发送有序广播
}
});
XML优先级设置:
android:name="com.example.aex56_ordered_broadcast.MyReceiver1"
android:enabled="true"
android:exported="true" >
android:name="com.example.aex56_ordered_broadcast.MyReceiver2"
android:enabled="true"
android:exported="true" >
接收电话呼出广播,为号码添加前缀;接收短信广播,拦截短信。
XML配置:<?xml version="1.0" encoding="utf-8"?>
package="com.example.aex58_ordered_tel"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="8"
android:targetSdkVersion="16" />
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name="com.example.aex58_ordered_tel.MyTelReceiver"
android:enabled="true"
android:exported="true" >
android:name="com.example.aex58_ordered_tel.MySmsReceiver"
android:enabled="true"
android:exported="true" >
电话呼出接收者MyTelReceiver:public class MyTelReceiver extends BroadcastReceiver
{
//监测电话号码
/*1.添加电话呼出权限
* uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"
*
*2.接收系统电话呼出的广播
*
*
*
*
* 其他系统广播:
* android.intent.action.BOOT_COMPLETED 开机启动广播
*/
@Override
public void onReceive(Context context, Intent intent)
{
String telnum = getResultData();//得到电话号码
telnum = "0592" + telnum;
setResultData(telnum);//设置拨出的电话号码
}
}
短信接收者MySmsReceiver:public class MySmsReceiver extends BroadcastReceiver
{
/*
* 拦截短信
* 1.添加短信接收权限
* uses-permission android:name="android.permission.RECEIVE_SMS"
*
* 2.设置广播优先级,接收系统收短信的广播
* 设置广播优先级
* 接收系统收到短信时的广播
*
*
* 3.重写onReceive
* abortBroadcast();
*/
@Override
public void onReceive(Context context, Intent intent)
{
Log.e("msg", "mmm");
abortBroadcast();//关闭广播
}
}