BroadCastReciver案例(IP拨号器)

【1】布局

BroadCastReciver案例(IP拨号器)

 

【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"/>