您好我正在使用软键盘。
当我访问我的服务时,我获得许可的例外 我的简单活动课中的课程。
堆栈异常跟踪如下所示,
在上图 InputServiceMethod class =绿色下划线。
活动类=蓝色下划线。
当我调用InputServiceMethod类时,我收到此异常 来自活动课。
为此我使用了下面的代码,它给了我异常,
Intent intent = new Intent(v.getContext(),SoftKeyboard.class);
startService(intent);
finish();
我的清单文件,如下所示,
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.softkeyboard"
android:installLocation="preferExternal">
<uses-permission android:name="android.permission.VIBRATE" />
<!-- <permission android:name="android.permission.BIND_INPUT_SERVICE" -->
<!-- android:exported="true"></permission> -->
<application android:label="@string/ime_name">
<service
android:name="com.example.android.softkeyboard.SoftKeyboard"
android:permission="android.permission.BIND_INPUT_METHOD"
android:exported="true">
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
<meta-data
android:name="android.view.im"
android:resource="@xml/method" />
</service>
<activity
android:name="com.configuration.Configuration"
android:label="@string/title_activity_configuration" >
</activity>
</application>
我不明白,即使我给出了关于BIND_INPUT_METHOD 的权限,它也会抛出异常。
如何解决?感谢
答案 0 :(得分:2)
看起来您正在将操作绑定到操作android.view.InputMethod
,同时受到权限android.permission.BIND_INPUT_METHOD
的保护,该权限用于确保只有系统可以通过其保护级别绑定到它。因此,根据Android,您只能定义键盘处理服务但不能显式调用它,只要需要输入法,系统就会自动调用它。所以有两种方法可以解决它:
1.让系统调用它,不要把它称为显式,或者
2.使用您正在运行的系统签名对应用程序进行签名,这将使您的应用程序平台依赖。 (不建议您的建筑通用申请)。
希望你了解情况。
答案 1 :(得分:0)
您正在使用的许可,即:
关于BIND_INPUT_METHOD的许可
仅适用于系统应用程序,并且大部分仅适用于有根设备,
它不会在无根设备上接受。