Android广播拦截拨号
public class MainActivity extends AppCompatActivity {
private EditText etNumber;
private Button bnt;
private SharedPreferences sharedPreferences;
private OutCallReceiver outCallReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNumber = (EditText) findViewById(R.id.et_number);
bnt = (Button) findViewById(R.id.bnt);
//创建SharedPreferences对象实例
sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
outCallReceiver = new OutCallReceiver();
IntentFilter intentFilter=new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL); //动态注册
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(outCallReceiver, intentFilter);
}
public void click(View view) {
//获取用户输入的号码
String number = etNumber.getText().toString().trim();
//创建Editor对象,保存用户输入的拦截号码
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("number", number);
editor.commit();
Toast.makeText(this, "保存成功", Toast.LENGTH_LONG).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
//取消动态注册
unregisterReceiver(outCallReceiver);
}
}
OutCallReceiver 创建类继承BroadcastReceiver
public class OutCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
//获取拨打的拦截号码
String callNumber = getResultData();
//创建SharedPreferences对象,获取该对象中存储的号码
SharedPreferences sharedPreferences = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String number = sharedPreferences.getString("number", "");
if (callNumber.equals(number)) {
Log.i("拦截号码:","已拦截下号码"+number);
//清空号码
setResultData(null);
}
}
}
手动注册广播