最近在做自动接听电话的功能,在网上查了很多,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的话就变成了挂断功能,相当于长按耳机接听键