【发布时间】:2012-08-14 17:33:53
【问题描述】:
我有一个 AccessibilityService 可以读出任何传入的通知。它在 ICS 及以下版本中运行良好,但在 JB 中停止运行。
下面是Manifest和代码:
<service
android:name=".Services.InstantMessengerJb"
android:enabled="@bool/is_post_jb"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
tools:ignore="ExportedService" >
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
</service>
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
SettingsClass.logMe(tag, "New event!");
new AccessibilityProcessing(this, event);
}
@Override
protected void onServiceConnected() {
if (isInit) {
return;
}
SettingsClass.logMe(tag, "We are connected!");
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
setServiceInfo(info);
isInit = true;
}
如前所述,它确实可以在所有 preJB 设备上运行,但在 JB 上服务启动(我得到“我们已连接”),但没有触发任何事件。
代码有什么问题吗?
【问题讨论】:
-
我发现它有效,但前提是定义了 declarativley。您还需要添加新的绑定权限并有一些条件逻辑来确定是否在果冻豆中运行,否则旧手机将无法使用新的绑定参数运行。我会试着一起举个例子。
-
我注意到在某些声明了绑定许可的设备上仍然可以使用冰淇淋沙,但不适用于生姜面包。
-
啊.. 很好的更正:绑定可访问性服务 >= api 16,但看起来它被忽略并且仍然在 api 15 中工作
标签: android android-4.2-jelly-bean accessibilityservice