Android5.0以上系统自动接电话的实现

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

猜你喜欢

转载自bcf.iteye.com/blog/2291884
今日推荐