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

标签 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

}

最佳答案

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

如果您也拥有应用程序代码,您可能只需单步执行那里的代码,看看发生了什么。例如,如果应用决定焦点需要位于某处,并将其放回 EditText 上,您可以获得观察到的行为。

关于android - 我想修改 EDITTEXT 的焦点, performAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS) 总是在 editText 上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966704/

相关文章:

android - android 中 webview 的后退和前进按钮。如何?

android - Google TalkBack 服务如何在按钮/文本/图像/等上绘制矩形?

android - 以编程方式单击通知操作按钮

android - 如何从AccessibilityNodeInfo获取webview

java - Android 上的异步套接字 I/O

android - 将复杂对象列表从 Activity 传递到 fragment

android - Xamarin 主详细信息页面自动汉堡包

android - 没有TextView时如何从accessibilityService中读取内容?

java.lang.IllegalStateException : android.accessibilityservice.AccessibilityService.getSystemService(AccessibilityService.java:1602)

android - Android 进程可以托管多个 Dalvik VM 吗?