最近在做自动接听电话的功能,在网上查了很多,4.4.2的系统都能接起来,但是我用的NOTE4,5.1.1系统却怎么也接不起来,今天查到了要连续发两个有序广播来实现,但我还是接不起来,后来突然想起来,有可能是两个广播发的时间太近了造成的,稍微修改一下就可以了,顺便还可以实现挂断功能
/** * 自动接听电话 */ private static void autoAnswercall(final Context context) { final 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)); final Intent btnUp = new Intent(Intent.ACTION_MEDIA_BUTTON).putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HEADSETHOOK)); context.sendOrderedBroadcast(btnDown, enforcedPerm); new Handler().postDelayed(new Runnable() { @Override public void run() { context.sendOrderedBroadcast(btnUp, enforcedPerm); } }, 500); try { Runtime.getRuntime().exec("input keyevent " + Integer.toString(KeyEvent.KEYCODE_HEADSETHOOK)); } catch (IOException e) { e.printStackTrace(); // Runtime.exec(String) had an I/O problem, try to fall back } }
其中的500如果改成1000的话就变成了挂断功能,相当于长按耳机接听键