Skip to content

Instantly share code, notes, and snippets.

@dybarsky
Last active July 12, 2020 20:33
Show Gist options
  • Save dybarsky/86b07da80ff816c71f5760318c7a9963 to your computer and use it in GitHub Desktop.
Save dybarsky/86b07da80ff816c71f5760318c7a9963 to your computer and use it in GitHub Desktop.
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
final String messageViewId = "android:id/message";
final String buttonViewId = "android:id/button1";
// get root layout node of dialog
AccessibilityNodeInfo rootNode = event.getSource();
// find textview with message & button nodes
List<AccessibilityNodeInfo> ussdResponseTextViewNodesList =
rootNode.findAccessibilityNodeInfosByViewId(messageViewId);
List<AccessibilityNodeInfo> cancelButtonNodesList =
rootNode.findAccessibilityNodeInfosByViewId(buttonViewId);
// if dialog doesn't contain views - skip accessibility event
if (ussdResponseTextViewNodesList.isEmpty() || cancelButtonNodesList.isEmpty()) {
return;
}
// get text from textview
CharSequence ussdReponse = ussdResponseTextViewNodesList.get(0).getText();
// store ussd response and notify activity
App.INSTANCE.ussdExecutor.setResponse(ussdReponse.toString());
App.INSTANCE.eventBus.sendEvent(EventBus.Event.USSD_RESULT_RECEIVED);
// dismiss dialog
cancelButtonNodesList.get(0).performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment