我想修改EDITTEXT的焦点,performAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS)总是在editText上返回false

时间:2018-12-29 04:26:58

标签: android accessibilityservice

我想清除无障碍服务中editText上特定操作的输入焦点。

我得到具有输入焦点的节点,并尝试清除它,但是performAction总是返回false:

AccessibilityNodeInfo root = getRootInActiveWindow();
AccessibilityNodeInfo focus = root.findFocus(AccessibilityNodeInfo.FOCUS_INPUT);

if(focus != null){

    focus.getText(); //return the text in my input
    focus.isFocusable(); //return true
    focus.isFocused(); // return true
    focus.getActions(); //Return the bitmask that contain the Action_clear_focus

    boolean sucess = focus.performAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS);
    Log.v(TAG, "sucess = " + sucess); //Always return FALSE

}

1 个答案:

答案 0 :(得分:0)

我不知道对EditText的ACTION_CLEAR_FOCUS进行具体处理。 View.java中动作的返回值就是!isFocused()。

如果您也拥有应用程序代码,则可以在其中单步执行代码,然后查看发生了什么。例如,如果应用程序确定焦点需要放在某个地方,然后将其放回EditText,则可以观察到行为。