做成一个输入法,在输入法里监听socket。
输入法里能获取当前获取焦点的editText

解决方案 »

  1.   

    我把这个service写成一个InputMethodService,调用了
    InputConnection ic = getCurrentInputConnection();
    if(ic != null) {
        ic.commitText(input, input.length());
    }
    但是这个inputConnection一直是空的,无法获取到。这个是什么原因呢。
      

  2.   

    有没有启用这个输入,并且选择了这个输入法呢并且在AndroidManifest.xml中有没有声明这个service为输入法呢
           <service
                android:name="MyFsatInput"
                android:permission="android.permission.BIND_INPUT_METHOD" >
                <intent-filter>
                    <action android:name="android.view.InputMethod" />
                </intent-filter>            <meta-data
                    android:name="android.view.im"
                    android:resource="@xml/method" />
            </service>我把这个service写成一个InputMethodService,调用了
    InputConnection ic = getCurrentInputConnection();
    if(ic != null) {
        ic.commitText(input, input.length());
    }
    但是这个inputConnection一直是空的,无法获取到。这个是什么原因呢。
      

  3.   

    那这样这个service不是就只有在输入文字时候才可以启动,我还需要这个service处理一些其他事情,比如调节音量等。需要service随系统一直在运行我把这个service写成一个InputMethodService,调用了
    InputConnection ic = getCurrentInputConnection();
    if(ic != null) {
        ic.commitText(input, input.length());
    }
    但是这个inputConnection一直是空的,无法获取到。这个是什么原因呢。
      

  4.   

    根据你描述的,剩下的只是Service与Activity之间的通信了。目前我想到的有两种方式:第一种、使用BroadcaseReceiver;第二种、实现AIDL进程间通信。
      

  5.   

    准确的说,启动输入法一次后service就一直在后台运行了,没有输入文字也在运行
      

  6.   


    这个service是想要开机就运行的,如果不启动输入法,就运行不了service了。。