你可以尝试执行一个PhoneStateListener,当你收到一个电话,你将它与你的数组进行比较,如果禁止切换到airplaine模式。事情是这样的:
case TelephonyManager.CALL_STATE_RINGING: // incoming call
{
for (int i = 0; i < forbiddenNumber.size; i++) {
if (incomingNumber.equals(forbiddenNumber[i])) {
// read the airplane mode setting
boolean isEnabled = Settings.System.getInt(
getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1;
// toggle airplane mode
Settings.System.putInt(getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, isEnabled ? 0
: 1);
// Post an intent to reload
Intent intent = new Intent(
Intent.ACTION_AIRPLANE_MODE_CHANGED);
intent.putExtra("state", !isEnabled);
sendBroadcast(intent);
}
}
不要忘记权限WRITE_SETTINGS