我想接听电话。我找到了意图android.intent.action.ANSWER
,但似乎我获得的唯一效果是ActivityNotFoundException。为什么?这是一个弃用的意图吗?我怎样才能达到答案?我也听说过“telnet技术”。那是什么?
由于
答案 0 :(得分:6)
你也可以发送呼叫密钥转发来接听电话 但设备需要植根
接听电话:
try {
Thread.sleep(800);
Process process = Runtime.getRuntime().exec(new String[]{ "su","-c","input keyevent 5"});
process.waitFor();
}catch (Exception e) {
e.printStackTrace();
}
结束通话:
try {
Thread.sleep(800);
Process process = Runtime.getRuntime().exec(new String[]{ "su","-c","input keyevent 6"});
process.waitFor();
}catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:4)
这是不可能的,请查看this主题以获取更多信息。
答案 2 :(得分:3)
可以接听来电。看看这个:here
答案 3 :(得分:2)
此事件不起作用。 你应该使用:
Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON);
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_HEADSETHOOK);
i.putExtra(Intent.EXTRA_KEY_EVENT, event );
context.sendOrderedBroadcast(i, null);
模仿按键的行为。
答案 4 :(得分:2)
这适用于Android 2.2到4.0,现在将try catch添加到最后一行后,它适用于4.1.2和4.2坦率地说不知道它是如何工作的,但它对我有用。
Log.d(tag, "InSecond Method Ans Call");
// froyo and beyond trigger on buttonUp instead of buttonDown
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(
KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
Intent headSetUnPluggedintent = new Intent(Intent.ACTION_HEADSET_PLUG);
headSetUnPluggedintent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
headSetUnPluggedintent.putExtra("state", 0);
headSetUnPluggedintent.putExtra("name", "Headset");
try {
sendOrderedBroadcast(headSetUnPluggedintent, null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这对我在Android 4.1.2中工作以及我在4.2上测试过 这仍然是一个处理的例外。
答案 5 :(得分:1)
模拟BT手机所使用的方法并不适用于所有Android版本和所有设备,因为BT手机处理可能会有所不同。
在许多设备和Android版本中验证的最佳方法包括模拟拨号器中呼叫按钮的压力和释放:
Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN,
KeyEvent.KEYCODE_CALL));
context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");
// froyo and beyond trigger on buttonUp instead of buttonDown
Intent buttonUp = new Intent(Intent.ACTION_MEDIA_BUTTON);
buttonUp.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP,
KeyEvent.KEYCODE_CALL));
context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");
你也可以通过adb或Runtime.exec发送Shell命令“input keyevent 5”来做到这一点,但在我的情况下并不适用于所有设备
答案 6 :(得分:0)
应将答案意图发送到InCallScreen。
adb shell am start -n com.android.phone/.InCallScreen -a android.intent.action.ANSWER
答案 7 :(得分:0)
try {
Runtime.getRuntime().exec("input keyevent"+Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
} catch (IOException e) {
//handle error here
}