是什么触发了对Android上AccessibilityInteractionController.performAccessibilityActionUiThread的调用?

是什么触发了对Android上AccessibilityInteractionController.performAccessibilityActionUiThread的调用?,android,android-edittext,android-input-filter,Android,Android Edittext,Android Input Filter,当用户与应用了LengthFilterInputFilter的EditText交互时,三星Galaxy S 7 Edge发生崩溃。用户将如何调用方法AccessibilityInteractionController.performAccessibilityActionUiThread 我查看了AccessibilityInteractionController的源代码,但找不到关于用户将如何触发该方法的良好文档 我的崩溃的堆栈跟踪与以下问题中的内容类似: 查看Android,这个问题似乎

当用户与应用了
LengthFilter
InputFilter
EditText
交互时,三星Galaxy S 7 Edge发生崩溃。用户将如何调用方法
AccessibilityInteractionController.performAccessibilityActionUiThread

我查看了
AccessibilityInteractionController
的源代码,但找不到关于用户将如何触发该方法的良好文档

我的崩溃的堆栈跟踪与以下问题中的内容类似:

查看Android,这个问题似乎是由于密码管理器使用可访问性事件生成密码造成的。但是,生成的密码不符合
maxLength
属性,导致崩溃

建议的解决方案似乎有效:创建一个子类,然后使用它。(复制代码以供参考)


是否在执行任何操作时都需要调用
活动。RunOnUIThread
“Android的UI组件不是线程安全的,因此当从异步数据库查询或web服务调用返回时,可能需要从辅助线程更新视图或其他UI组件。如果从辅助线程运行代码,您可能会发现几乎每次尝试都会导致代码崩溃。”
public class SafePinEntryEditText extends EditText {

    public SafePinEntryEditText(Context context) {
        super(context);
    }

    public SafePinEntryEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SafePinEntryEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(21)
    public SafePinEntryEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void setSelection(int index) {
        // prevent index out of bounds caused by AccessibilityService events
        if (index > length()) {
            index = length();
        }
        super.setSelection(index);
    }

    @Override
    public void setSelection(int start, int stop) {
        // prevent index out of bounds caused by AccessibilityService events
        if (start > length()) {
            start = length();
        }
        if (stop > length()) {
            stop = length();
        }
        super.setSelection(start, stop);
    }
}