在 Android 中如何在没有用户交互的情况下务实地接收接听电话
How pragmatically receive the recipient call without user interaction in Android
我想编写一个 Android 代码,无需用户交互即可自动接收收件人 phone 呼叫?
是否有 anyway/possibility 可以这样做,或者我只是在浪费宝贵的时间?
因为我有 google 但没有找到任何相关结果?
我尝试实现相同的功能并且它工作完美,但对于某些设备它不起作用..
private void acceptCall() {
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("execute input keycode headset hook");
System.out.println("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
Runtime.getRuntime().exec("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
} catch (IOException e) {
// Runtime.exec(String) had an I/O problem, try to fall back
System.out.println("send keycode headset hook intents");
String enforcedPerm = "android.permission.CALL_PRIVILEGED";
Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
sendOrderedBroadcast(btnDown, enforcedPerm);
sendOrderedBroadcast(btnUp, enforcedPerm);
System.out.println("Exception " + e.toString());
}
}
}).start();
}
我想编写一个 Android 代码,无需用户交互即可自动接收收件人 phone 呼叫? 是否有 anyway/possibility 可以这样做,或者我只是在浪费宝贵的时间? 因为我有 google 但没有找到任何相关结果?
我尝试实现相同的功能并且它工作完美,但对于某些设备它不起作用..
private void acceptCall() {
new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("execute input keycode headset hook");
System.out.println("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
Runtime.getRuntime().exec("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK));
} catch (IOException e) {
// Runtime.exec(String) had an I/O problem, try to fall back
System.out.println("send keycode headset hook intents");
String enforcedPerm = "android.permission.CALL_PRIVILEGED";
Intent btnDown = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(
Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK));
sendOrderedBroadcast(btnDown, enforcedPerm);
sendOrderedBroadcast(btnUp, enforcedPerm);
System.out.println("Exception " + e.toString());
}
}
}).start();
}