title: java.lang.SecurityException: without permission android.permission.BIND_INPUT_METHOD only for <=2.2
body: <p>I have this very unpeculiar exception.The thing is have i have this app that has a button to start </p>
  
  <pre><code> InputMethodService
  </code></pre>
  
  <p>that starts like this </p>
  
  <pre><code>public class MyGroovyIme extends InputMethodService {
  </code></pre>
  
  <p>and this is how it looks in manifest.</p>
  
  <pre><code>  &lt;service
          android:name=".MyGroovyIme"
          android:enabled="true"
          android:exported="true"
          android:permission="android.permission.BIND_INPUT_METHOD" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.view.InputMethod" /&gt;
              &lt;!-- &lt;category android:name="android.intent.category.DEFAULT" /&gt; --&gt;
          &lt;/intent-filter&gt;
  
          &lt;meta-data
              android:name="android.view.im"
              android:resource="@xml/method" /&gt;
      &lt;/service&gt;
  </code></pre>
  
  <p>and this is how I start service</p>
  
  <pre><code>  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...");
  }
  </code></pre>
  
  <p>the whole setup works like a charm when i do it on Tablet(Moto XOOM ,its 3.2) but when I do it on Devices that run on 2.2 and 2.1(i havent tried it on 2.3 and cant use emulator either) this is what i get</p>
  
  <pre><code> 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)
  </code></pre>
  
  <p>I do understand the security concerns but shouldnt it be same for all devices or am i missing something specific to versions &lt;3.2</p>