我有这个非常不寻常的例外。问题是我有这个应用程序有一个按钮来启动
InputMethodService
像这样开始
public class MyGroovyIme extends InputMethodService {
这就是它在清单中的样子。
<service
android:name=".MyGroovyIme"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BIND_INPUT_METHOD" >
<intent-filter>
<action android:name="android.view.InputMethod" />
<!-- <category android:name="android.intent.category.DEFAULT" /> -->
</intent-filter>
<meta-data
android:name="android.view.im"
android:resource="@xml/method" />
</service>
这就是我开始服务的方式
void startServer() {
Log.v(TAG, "Starting service...");
Intent serviceIntent = new Intent(this, MyGroovyIme.class);
startService(serviceIntent);
Log.v(TAG, "Starting service...success!!!");
// this.finish();
Log.v(TAG, "finish called...");
}
当我在平板电脑(Moto XOOM,它的 3.2)上执行此操作时,整个设置就像一个魅力,但是当我在运行 2.2 和 2.1 的设备上执行此操作时(我还没有在 2.3 上尝试过,也无法使用模拟器)这就是我得到
java.lang.SecurityException: Not allowed to start service Intent { cmp=com.spp.ime.demo/.MyGroovyIme } without permission android.permission.BIND_INPUT_METHOD
at android.app.ContextImpl.startService(ContextImpl.java:840)
at android.content.ContextWrapper.startService(ContextWrapper.java:336)
at com.spp.ime.demo.GROOVY_IME_DEMOActivity.startServer(GROOVY_IME_DEMOActivity.java:137)
at com.spp.ime.demo.GROOVY_IME_DEMOActivity.onStartClick(GROOVY_IME_DEMOActivity.java:104)
at com.spp.ime.demo.GROOVY_IME_DEMOActivity.onClick(GROOVY_IME_DEMOActivity.java:67)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4633)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
我确实了解安全问题,但不应该对所有设备都相同,或者我是否缺少特定于版本 <3.2 的内容