Я хотел бы получить все элементы в RecyclerView (в другом приложении, таком как FB).
Я использовал AccessibilityService
и прокрутил RecyclerView
, позвонив:
AccessibilityNodeInfo performAction (ACTION_SCROLL_FORWARD)
, но после этого событие onAccessibilityEvent
было запущено.
Как я могу прокрутить RecyclerView, не вызывая события в onAccessibilityEvent
?
RecyclerView обновляется самим приложением. Так посмотрите событие AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED, AccessibilityEvent.TYPE_VIEW_SCROLLED
Но вызов findItemAndClick () вызовет ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD * 1020Event_SCROLL_BACKWARD * * 1020, событие Accessibility_EDTINE_VIND_SU_UA_1020, * 1020 - inf *
Спасибо
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
String className = event.getClassName().toString();
if (className.equals("androidx.recyclerview.widget.RecyclerView"))
{
switch (eventType)
{
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
case AccessibilityEvent.TYPE_VIEW_SCROLLED:
findItemAndClick();
break;
}
}
}
private void findItemAndClick(){
scrollToTop();
findItem();
}
private scrollToTop()
{
//code snippet, scroll top by ACTION_SCROLL_BACKWARD
listviewNode.performAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD);
//ACTION_SCROLL_BACKWARD cause TYPE_WINDOW_CONTENT_CHANGED, TYPE_VIEW_SCROLLED
}
private findItem()
{
//scroll down to find
listviewNode.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
//ACTION_SCROLL_FORWARD cause TYPE_WINDOW_CONTENT_CHANGED, TYPE_VIEW_SCROLLED
}