2016-06-06 17 views
1

我的應用程序需要以編程方式接聽來電(這是一個允許通過辦公室撥號的企業電話應用程序)。 直到Android 4.4,我使用的是Headset Hook method程序化地在沒有根目錄或系統應用程序的情況下接聽來電鈴聲/棉花糖

不幸的是,在5.0和6.0中似乎不再有效。我嘗試過試驗KeyEvent.ACTION_DOWN和ACTION_UP,沒有和沒有android.permission.CALL_PRIVILEGED權限。我也嘗試換用KeyEvent.KEYCODE_CALL的KeyEvent.KeyCODE_HEADSETHOOK來無效,並且觸發耳機插頭。所有這一切都沒有在我的Nexus 6P上移動。發送「輸入keyevent 79」也不會做任何事情。

作爲一個企業電話應用程序,它需要在各種無根設備上運行,因此調用服務以及任何需要android.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)); 

希望這會幫助別人節省一些時間。 。

相關問題