我一直在研究一种使用“KeyEvent”方法自动接听电话的方法,许多人似乎都信誓旦旦。
此方法适用于模拟器,但不适用于实际设备。
我正在使用的代码如下:
Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
ctx.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
ctx.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
Intent headSetUnPluggedintent = new Intent(Intent.ACTION_HEADSET_PLUG);
headSetUnPluggedintent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
headSetUnPluggedintent.putExtra("state", 1); // 0 = unplugged 1 = Headset with microphone 2 = Headset without microphone
headSetUnPluggedintent.putExtra("name", "Headset");
// TODO: Should we require a permission?
ctx.sendOrderedBroadcast(headSetUnPluggedintent, "android.permission.CALL_PRIVILEGED");
发生的情况是,在模拟器上,答案“按钮”似乎起作用。不幸的是,在实际的手机上,看起来正在发送的 KeyEvent 被完全忽略了。
有没有人找到在 Android 2.3.* 上执行此操作的可靠方法?