您的位置:首页 > 移动开发 > Android开发

Androidx学习笔记(56)--- IP拨号器

2016-02-14 06:14 495 查看

IP拨号器

原理:接收拨打电话的广播,修改广播内携带的电话号码 * 定义广播接收者接收打电话广播
public class CallReceiver extends BroadcastReceiver {

//当广播接收者接收到广播时,此方法会调用
@Override
public void onReceive(Context context, Intent intent) {
//拿到用户拨打的号码
String number = getResultData();
//修改广播内的号码
setResultData("17951" + number);
}
}
在清单文件中定义该广播接收者接收的广播类型
<receiver android:name="com.exp.ipdialer.CallReceiver">
<intent-filter >
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
接收打电话广播需要权限
<uses-permission android:name="android.permission.PROCESS_O LLS"/>
即使广播接收者的进程没有启动,当系统发送的广播可以被该接收者接收时,系统会自动启动该接收者所在的进程

MainActivity

public void click(View v){
EditText et = (EditText) findViewById(R.id.et);
SharedPreferences sp = getSharedPreferences("ip", MODE_PRIVATE);
sp.edit().putString("ipNumber", et.getText().toString()).commit();
}

广播

public class CallReceiver extends BroadcastReceiver {
 
//接收到广播时就会调用
@Override
public void onReceive(Context context, Intent intent) {
//添加IP线路
//在打电话广播中,会携带拨打的电话的号码,通过以下代码获取到
String number = getResultData();
if(number.startsWith("0")){
	SharedPreferences sp = context.getSharedPreferences("ip", Context.MODE_PRIVATE);
	String ipNumber = sp.getString("ipNumber", "");
	
	//把IP线路号码添加至用户拨打号码的前面
	number = ipNumber + number;
	
	//把新的号码重新放入广播中
	setResultData(number);
	
	abortBroadcast();
}
}
 
}

AndroidManifest.xml

<receiver android:name=".CallReceiver">
<intent-filter >
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: