是否可以以编程方式一个接一个地发送多个辅助功能事件?在我的用例中,用户必须在另一个活动中选择一个文件,回来时,我要发送事件“文件导入成功..”,并将焦点设置到活动中的最后一个按钮,否则将相同的按钮导入文件已经自动获得焦点。
我尝试了以下操作:
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);
}
部分起作用,在这种情况下,按钮处于焦点状态,但此事件中断了第一个事件。