1.AccessibilityNodeInfo.findAccessibilityNodeInfosByText(java.lang.String)' on a null object reference
if (getRootInActiveWindow() == null) return;
List<AccessibilityNodeInfo> tijiaodingdan = getRootInActiveWindow().findAccessibilityNodeInfosByText("订单");
分析 :当前页面应该是 没有 订单这个 词的 时候 报错 这一行 报错
解决:
if (nodeInfo == null) return null;
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText(text);
if (list == null || list.isEmpty()) {
return null;
}
return list.get(0);
2.AccessibilityService 如何 拿到 列表 的 每一行 listview
node.getChild(position)//可以获取当前屏幕的显示的这几行
3.AccessibilityService 如何停止服务
调用disableSelf();方法辅助功能就会被关闭 这个方法在服务内部可以调用
如何在外部 停止呢?
在内部可以监听音量键 来关闭 服务
@Override
protected boolean onKeyEvent(KeyEvent event) {
switch(event.getKeyCode()){
case KeyEvent.KEYCODE_VOLUME_DOWN:
Log.e(TAG, "KEYCODE_VOLUME_DOWN");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
disableSelf();
}
break;
case KeyEvent.KEYCODE_VOLUME_UP:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
disableSelf();
}
Log.e(TAG, "KEYCODE_VOLUME_UP");
break;
}
return super.onKeyEvent(event);
}
加上以后 没有 起作用?
解决
由于是对事件监听,所以android:accessibilityFlags=”flagRequestFilterKeyEvents”,同时注意,Android:accessibilityFlags不能使用默认的,android:canRequestFilterKeyEvents必须为true,默认的是false。








网友评论