2012-12-21 108 views
1

打開(切換,設置)軟鍵盤從我的服務?如何打開(開關,設置)服務軟鍵盤

我的申請不包含任何活動。但是當我的服務中,當我的應用程序在屏幕上時,我嘗試在觸發器上打開軟鍵盤。 我在InputMethodManager的方法setInputMethod中找到。第二個參數是鍵盤的ID。我知道。但第一個參數是IBinder。在我的應用程序中,IBinder的論點是什麼?

添加細節:

我的應用程序包括ServiceInputMethodService

服務中 - 分析系統中的啓動應用程序。在InputMethodService - 我的軟鍵盤(IME)。如果在我的服務中,我確定什麼是開始正確的應用程序(我沒有擁有此應用程序),我需要將當前softkeyboard切換到我的InputMethodService的IME。只能切換,而不能打開鍵盤。當用戶點擊客戶端應用程序中的editabled視圖時,系統打開我的軟鍵盤。

+0

你爲什麼想這樣做? –

+0

@Praful Bhatnagar,Short:我的服務分析系統中任何應用程序的啓動,並且我需要在啓動正確的應用程序時啓動所需的鍵盤。 –

+0

啊真的很抱歉,但我仍然不明白的要求..你可以請詳細說明的要求.. –

回答

0

我的解決辦法代碼Service

((InputMethodManager) contextService.getSystemService(Context.INPUT_METHOD_SERVICE)).setInputMethod(null, myInputMethodId); 
    ((InputMethodManager) contextService.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInputFromWindow(null, 1, 0); 

附:只有當我的應用程序是一個系統時(null第一個參數在setInputMethod可用,只有當我的應用程序是系統時),這項工作。 我以編程方式獲得我的應用程序的系統特權mv /data/app/myapp.apk /system/app/myapp.apk(基於https://stackoverflow.com/a/14257161/1665964)。