Android系统内部相当于已经有了一个电台,定义了好多广播事件,比如外拨电话,短信到来,sd卡状态,电磁电量变化…
1、IP拨号器
两个电话之间实际上是通过基站之间建立一个socket连接
IP拨号器就是第三方公司搞了另外的服务器,原来拨打电话走的移动、联通、电信的收费平台。现在加上IP比如17951,路线:
打电话系统就会发出外拨电话的广播,在拨出的电话前面加上17951
当我们配置的action的事件发生了,onReceive方法就会执行。
//定义一个广播接收者就要在清单文件里面配置
<receiver android:name="...">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
public class OutGoingCallReceiver extends BroadcastReceiver {
//当接收到外拨电话的广播时
@Override
public void onReceive(Context context, Intent intent) {
//[1]获取当前我们要拨打的电话号码
String currentNumber = getResultData();
//[1.1]判断拨打的电话是否长途
if(currentNumber.startsWith("0")){
//[2]在当前的号码前面加上17951
setResultData("17951"+currentNumber );
}
}
}