Android: как ответить на звонок автоматически? - PullRequest
2 голосов
/ 06 февраля 2012

Я пытаюсь сделать так, чтобы мой телефон автоматически отвечал на звонки, но похоже, что Google удаляет разрешения для этого пути:

TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService;
telephonyService = (ITelephony)m.invoke(tm);
telephonyService.silenceRinger();
telephonyService.answerRingingCall();

Так что я нахожу другой способ здесь: http://code.google.com/p/auto-answer/source/browse/trunk/src/com/everysoft/autoanswer/AutoAnswerIntentService.java

// Simulate a press of the headset button to pick up the call
Intent buttonDown = new Intent(Intent.ACTION_MEDIA_BUTTON);             
buttonDown.putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK));
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_HEADSETHOOK));
context.sendOrderedBroadcast(buttonUp, "android.permission.CALL_PRIVILEGED");

Но это тоже не работает.Что я скучаю?

1 Ответ

0 голосов
/ 13 октября 2014

Измените следующее

context.sendOrderedBroadcast(buttonDown, "android.permission.CALL_PRIVILEGED");

на

context.sendBroadcast(buttonDown);.

то же самое с buttonUp.Потому что sendOrderedBroadcast() может быть прервано другим получателем.

...