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);
}
}
}
手動註冊廣播