我想接听电话。我找到了意图android.intent.action.ANSWER
,但似乎我得到的唯一影响是一个ActivityNotFoundException。为什么?这是一个不赞成的意图吗?我如何获得答案?我也听说过“telnet技术”。那是什么?如何以编程方式接听电话?
感谢
我想接听电话。我找到了意图android.intent.action.ANSWER
,但似乎我得到的唯一影响是一个ActivityNotFoundException。为什么?这是一个不赞成的意图吗?我如何获得答案?我也听说过“telnet技术”。那是什么?如何以编程方式接听电话?
感谢
这是不可能,检查this线程以获取更多信息。
这个事件是不行的。 你应该使用:
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);
是模拟按键的bhavior。
应答意图应发送到InCallScreen。
adb shell am start -n com.android.phone/.InCallScreen -a android.intent.action.ANSWER
你也可以将通话的KeyEvent来接听电话 但设备需要植根
接听电话:
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();
}
一个非常简单和简单的解决方案。为我工作。多谢了! – Basher51 2014-10-23 05:06:46
这对于Android N来说已经不再可能了。https://source.android.com/security/bulletin/2016-03-01.html – AnixPasBesoin 2017-01-31 04:20:44
看看日期。这是5年前:-) – Seifolahi 2017-01-31 06:15:09
的方法用于模拟BT手机不适用于所有Android版本和a由于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");
你可以做到这一点还通过发送Shell命令“输入KeyEvent的5 “通过adb或通过Runtime.exec,但在我的情况下,并不适用于所有设备
这从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 测试这仍然给它处理的异常。
try {
Runtime.getRuntime().exec("input keyevent"+Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
} catch (IOException e) {
//handle error here
}
好的,看到线程......但为什么有这种意图?它甚至不被弃用! – Matroska 2010-04-09 20:58:08
我知道,如果你是谷歌的ACTION_ANSWER,你会发现很多关于人们为了找到一种自动打电话的方式而疯狂的话题。这个功能肯定已被Android员工关闭(安全原因?)。 – systempuntoout 2010-04-10 10:58:46