3

Ich habe dies sehr unpeculiar exception.The Sache haben, ist ich diese App haben, die eine Schaltflächejava.lang.SecurityException: ohne Erlaubnis android.permission.BIND_INPUT_METHOD nur für <= 2,2

InputMethodService 

zu beginnen hat, dass startet so

public class MyGroovyIme extends InputMethodService { 

und so sieht es in manifest aus.

<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> 

und das ist, wie ich 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..."); 
} 

die ganze Einrichtung wie ein Zauber funktioniert starten, wenn ich es tun auf Tablet (Moto XOOM, seine 3,2), aber wenn ich es auf Geräte, die laufen auf 2,2 und 2,1 (i haben es versucht, auf 2,3 und kippe Verwendung Emulator entweder) das ist, was ich

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) 

bekommen kann ich die Sicherheitsbedenken verstehen, aber es ist für alle Geräte gleich shouldnt oder fehle ich etwas Bestimmtes versio ns < 3.2

+0

Ich bin nicht sicher, aber wenn ich die Erlaubnis als Attribut anstelle eines Tags zu sehen, Probleme gemeldet werden ... haben Sie es als eine einzige Erlaubnis Tag versucht ? – WarrenFaith

+0

Sie wissen, 3.x ist anders als 2.x ... 3.x ist speziell für Tabletten .. ich denke, das verursacht Ärger ... – ngesh

+0

@WarrenFaith ich versuchte diese Möglichkeiten als auch, aber das ist, wie es sein muss habe auch Beispiele gesehen. –

Antwort

0

Nach einer langen Suche nicht haben eine zuverlässige Antwort und noch nicht den genauen Grund bekam gefunden haben .. aber gehen durch die neuen Funktionen haben Hardware-Features gefunden, die in späteren Versionen hinzugefügt wurden dieser Milde geführt haben in Android OS. Hier ist der Link beschreibt wichtige Updates für Android here

+0

überprüfen Sie diese ans für die Arbeit ... – Vishal

0
// only work for pre-lolipop 
<uses-permission 
    android:name="android.permission.BIND_INPUT_METHOD" 
    tools:ignore="ProtectedPermissions" 
    android:protectionLevel="signature" /> 

<service 
    android:name="SimpleIME" 
    android:permission="android.permission.BIND_INPUT_METHOD" 
    android:protectionLevel="signature"> 

    <intent-filter> 
     <action android:name="android.view.InputMethod" /> 
    </intent-filter> 
    <meta-data 
     android:name="android.view.im" 
     android:resource="@xml/method" /> 
</service> 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" />