2016-06-06 14 views
1

Мое приложение должно программным образом отвечать на входящие звонки (это приложение корпоративной телефонии, которое позволяет набирать номер через офис). До Android 4.4, я использовал Headset Hook methodПрограммный ответ на входящий вызов на Lollipop/Marshmallow без корневого или системного приложения

К сожалению, в 5.0 и 6.0, который больше не работает. Я пробовал экспериментировать с KeyEvent.ACTION_DOWN и ACTION_UP без разрешения android.permission.CALL_PRIVILEGED. Я также попытался заменить KeyEvent.KeyCODE_HEADSETHOOK для KeyEvent.KEYCODE_CALL безрезультатно, а также запустить штепсель гарнитуры. Все, что ничто не двигает на моем Nexus 6P. Отправка «input keyevent 79» тоже ничего не делает.

Будучи приложением для корпоративной телефонии, оно должно запускаться на множестве неперекрытых устройств, поэтому вызов службы отсутствует, а также все, что требует андроида.permission.MODIFY_PHONE_STATE.

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

ответ

1

Мне удалось перепроектировать приложение, в котором оно работало. Вот как сделать это ..

Обратите внимание, что код для Xamarin, но я уверен, что вы можете вернуть его в Java формат;)

Instrumentation inst = new Instrumentation(); 
inst.SendKeySync(new KeyEvent(KeyEventActions.Down, Keycode.Headsethook)); 
inst.SendKeySync(new KeyEvent(KeyEventActions.Up, Keycode.Headsethook)); 

Надеется, что это поможет кто-нибудь сэкономить время. .