我正在尝试实施AccessibilityService
。我在下面分享了我的代码。
当我从设置菜单打开辅助功能服务时,会调用onServiceConnected()
,但根本不会调用onAccessibiltyEvent()
。请指导我。
清单文件中的服务声明。
<service
android:name=".MyAccessibilityService"
android:enabled="true"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
</service>
XML文件
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:accessibilityEventTypes="typeAllMask"
android:canRequestFilterKeyEvents="true"
android:accessibilityFlags="flagDefault"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
/>
MyAccessibiltyService.java
public class MyAccessibilityService extends AccessibilityService {
@Override
protected void onServiceConnected() {
super.onServiceConnected();
Log.d(TAG,"Service Connected");
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
System.out.println("Event Occurred");
Log.d(TAG, "onAccessibilityEvent: event=" + event);
AccessibilityNodeInfo nodeInfo = event.getSource();
if (null == nodeInfo) return;
}
@Override
public void onInterrupt() {
Log.d(TAG,"Accessibility Interrupted" );
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"Service Destroyed");
}
}
请注意,我已经检查了所有stackoverflow答案,因此不要将其标记为重复。
答案 0 :(得分:5)
我需要在{k: a.get(k, 0) + b.get(k, 0) for k in set(list(a.keys()) + list(b.keys()))}
文件中添加反馈类型才能使其正常工作。
尝试添加此
accessibility_service_config
使用Android 7.1.2在Nexus 6P上进行测试
答案 1 :(得分:2)
代码中的所有内容似乎都是正确的。
尝试以下方法之一:
转到“设置”>“辅助功能”>“ YourApp”>“禁用”,然后启用。
重新启动设备。
对我来说,第2步解决了问题。
答案 2 :(得分:0)
您的accessibility_service_config
缺少包,它们定义了您AccessibilityService
想要监控的应用。在android:packageNames="app.package.name"
中添加accessibility_service_config
。
您可以参考Android开发人员指南here。
Eidt:
好吧,如果你不提供软件包名称,它似乎意味着监控所有软件包。也许您可以尝试指定一个包以查看它是否有效。