2016-06-06 6 views
1

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.

Antwort

1

Ich habe es geschafft, eine Anwendung zurückzuentwickeln, wo es funktionierte. Hier ist, wie es zu tun bekommen ..

Beachten Sie, dass der Code für Xamarin ist, aber ich bin sicher, dass Sie es zurück zu Java Format bringen kann;)

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

Hope this jemand helfen Zeit sparen.

Verwandte Themen