1.实现简单的IP拨号
package cn.itcast.ipcall;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
public class OutGoingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println(getResultData());
//abortBroadcast();
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String ipnumber = sp.getString("ipnumber", "");
setResultData(ipnumber+getResultData());
}
}
<receiver android:name=".OutGoingCallReceiver" >
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
在android操作系统里面 会有很多的广播事件.BroadCastRecevier
BroadCastRecevier 有两种注册方式
1. 清单文件里注册: 一旦应用程序被部署到手机, 广播接受者就会生效
2. 代码里面注册: 一旦代码所在的进程被杀死了, 广播接受者就失效了.
广播接受者分为两种类型:
1. 有序的广播. 短信到来的广播 电话拨打的广播
-1000~1000 设置广播的优先级
android:priority="1000"
从高优先级->低优先级 依次传递
abortbroadcast() 方法 可以终止广播事件
2. 无序广播.
没有优先级 任何人 注册广播接受者的人,都可以接收到广播.
没有abortboradcast()方法
sendBroadcast(intent); // 发送一条广播
sendOrderedBroadcast(intent, receiverPermission); // 发送一条有序广播
sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras)
如果发送广播的时候 使用的 上面的api发送出去的广播
第三个参数 resultReceiver 指定了广播的接受者.
即便是中间我把广播给终止 abortbroadcast()
resultReceiver 还是会接受到广播时间
setResultData(null);