Android辅助功能:连续发送多个辅助功能事件

时间:2019-08-23 16:21:29

标签: android android-accessibility

是否可以以编程方式一个接一个地发送多个辅助功能事件?在我的用例中,用户必须在另一个活动中选择一个文件,回来时,我要发送事件“文件导入成功..”,并将焦点设置到活动中的最后一个按钮,否则将相同的按钮导入文件已经自动获得焦点。

我尝试了以下操作:

    AccessibilityManager manager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
            if (manager.isEnabled()) {
                AccessibilityEvent e = AccessibilityEvent.obtain();
                e.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
                e.setClassName(getClass().getName());
                e.setPackageName(getPackageName());
                e.getText().add(getString(R.string.file_import_success));

                manager.sendAccessibilityEvent(e);

                if (mCreateButton != null) {
                    mCreateButton.setFocusable(true);
                    AccessibilityEvent e2 = AccessibilityEvent.obtain();
                    e2.setEventType(AccessibilityEvent.TYPE_VIEW_FOCUSED);
                    e2.setClassName(getClass().getName());
                    e2.setPackageName(getPackageName());
                    manager.sendAccessibilityEvent(e2);
                }
}

第一个事件运行良好,第二个事件被忽略,重用第一个“ e”也不起作用。

我还尝试了以下第二项活动:

if (mCreateButton != null) {
            mCreateButton.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (mCreateButton != null) {
                        mCreateButton.setFocusable(true);
                        mCreateButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
                    }
                }
            }, 500);
        }

部分起作用,在这种情况下,按钮处于焦点状态,但此事件中断了第一个事件。

0 个答案:

没有答案