Meine Anwendung muss eingehende Anrufe programmgesteuert beantworten (eine Unternehmens-Telefonie-App, die das Wählen über das Büro ermöglicht). Bis Android 4.4, war ich mit der Headset Hook methodProgrammgesteuertes Annehmen eingehender Anrufe auf Lollipop/Marshmallow ohne Root- oder Systemanwendung
Leider in 5.0 und 6.0 scheint das nicht mehr zu funktionieren. Ich habe versucht, mit KeyEvent.ACTION_DOWN und ACTION_UP zu experimentieren, ohne und ohne die Berechtigung android.permission.CALL_PRIVILEGED. Ich habe auch versucht, das KeyEvent.KeyCODE_HEADSETHOOK für KeyEvent.KEYCODE_CALL vergeblich zu vertauschen, sowie den Headset-Stecker auszulösen. Alles, was nichts bewegt, bewegt sich auf meinem Nexus 6P. Das Senden von "Eingabe KeyEvent 79" macht auch nichts.
Da es sich um eine Unternehmenstelefonie-App handelt, muss es auf einer Vielzahl von nicht gerooteten Geräten ausgeführt werden. Daher ist der Anrufdienst ebenso deaktiviert wie alles, was android.permission.MODIFY_PHONE_STATE erfordert.
Ich weiß, dass dies möglich ist, weil ich eine andere Telefonie-App auf meinem Telefon habe, die genau das tut, ohne spezielle Berechtigungen zu benötigen.