BroadCastReciver案例(IP拨号器)
【1】布局
【1】创建一个EditText然后把要设置的IP号填写保存
public class MainActivity extends Activity {
private EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) findViewById(R.id.et_number);
}
//点击按钮的时候 保存用户输入的ip号码
public void click(View v) {
//[1]获取用户输入的ip号码
String ipnumber = et_number.getText().toString().trim();
//[2]保存用户输入的号码 系统会帮助我们生产一个xml文件
SharedPreferences sp = this.getSharedPreferences("config", 0);
Editor edit = sp.edit();
edit.putString("ipnumber", ipnumber);
//[3]最后一步 一定记得commit
edit.commit();
Toast.makeText(getApplicationContext(), "sucess", 1).show();
}
}
【2】创建一个类继承BroadCastReceiver
//相当于你有了一个收音机
public class OutGoingCallReceiver extends BroadcastReceiver {
//当接收到我们注册的广播的时候 当进行外拨电话的时候执行
@Override
public void onReceive(Context context, Intent intent) {
abortBroadcast();
//[1]获取我们拨打的号码
String currentNumber = getResultData();
//[1.1]获取我们保存的ip号码 数据是怎么存的就怎么取 数据是存的什么类型 就取对应的类型
SharedPreferences sp = context.getSharedPreferences("config", 0);
String ipnumber = sp.getString("ipnumber", "");
//[2]判断拨打的电话是否是长途
if (currentNumber.startsWith("0")) {
//[3]设置修改的号码
setResultData(ipnumber+currentNumber);
}
}
}
【3】清单目录配置:
<receiver android:name="com.itheima.ipdail.OutGoingCallReceiver">
<!--相当于你给收音机安装了一个电池 -->
<intent-filter >
<!-- 相当于对收音机进行调频 -->
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
【4】添加联网权限:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>