美文网首页
AccessibilityService 报错

AccessibilityService 报错

作者: cain07 | 来源:发表于2020-07-11 16:24 被阅读0次

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。

相关文章

网友评论

      本文标题:AccessibilityService 报错

      本文链接:https://www.haomeiwen.com/subject/tcyicktx.html