소스출처 : Google검색
public void onAccessibilityEvent(AccessibilityEvent event) {
if (AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED == event.getEventType()) {
AccessibilityNodeInfo nodeInfo = event.getSource();
if (nodeInfo == null) return;
List<AccessibilityNodeInfo> list = new ArrayList<>();
if ("com.android.settings.applications.InstalledAppDetailsTop".equals(event.getClassName())) {
if (Build.VERSION.SDK_INT >= 18) {
list = nodeInfo.findAccessibilityNodeInfosByViewId("com.android.settings:id/right_button");
} else if (Build.VERSION.SDK_INT >= 14) {
list = nodeInfo.findAccessibilityNodeInfosByText("com.android.settings:id/right_button");
}
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}
}
}
위 예제는 접근성을 이용하여 실행중인 다른 App을 강제종료하는 소스의 일부분입니다.
제가 궁금한것은 위의 하이라이트 부분의 findAccessibilityNodeInfosByViewId에 들어가는 ViewID값입니다.
("com.android.settings:id/right_button")라는 값을 어떻게 알아낸것일까요?
혹시나 싶어서 nodeInfo.getViewIdResourceName()을 찍어봤으나, null을 리턴합니다.