【发布时间】:2014-10-29 10:42:12
【问题描述】:
我想像 greenify 一样使用 AccessibilityService 在 android 设置中单击按钮,但我找不到特定按钮。请帮帮我。
MyAccessibilityService .java:
public class MyAccessibilityService extends AccessibilityService {
private static final String TAG = MyAccessibilityService.class
.getSimpleName();
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.i(TAG, "ACC::onAccessibilityEvent: " + event.getEventType());
//TYPE_WINDOW_STATE_CHANGED = 32,
if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event.getEventType()) {
AccessibilityNodeInfo nodeInfo = event.getSource();
Log.i(TAG, "ACC::onAccessibilityEvent: nodeInfo=" + nodeInfo.getText());
List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByViewId("com.android.settings:id/left_button");
for (AccessibilityNodeInfo node : list) {
Log.i(TAG, "ACC::onAccessibilityEvent: " + event.getEventType()
+ " " + node);
}
编辑:
只有当 type 为 TYPE_WINDOW_STATE_CHANGED 时,我才能得到 nodeInfo 对象。
【问题讨论】:
-
您的服务是否接收事件? getSource() 是否返回非空值?为什么要尝试对窗口状态更改事件的源(始终是窗口的根视图)执行单击和滚动操作?
-
我删除了一些令人困惑的代码(执行点击和滚动):)
-
您确定确实存在具有该 ID 的视图吗?字符串“force_stop_button”不会出现在 Android 源代码树中的任何位置。
-
是的,这是我的错误,字符串应该是“com.android.settings:id/left_button”,它可以工作。
标签: android accessibility