Android应用程序是否可以通过程序与USSD对话框进行交互?该应用程序在有根电话上运行,并且不会发布到Google商店(仅供内部使用)。
我知道我们可以读取USSD对话框的响应(使用可访问性技巧)。但是我要在这里实现的是让USSD对话框打开并与之交互,就像普通用户使用软键盘与之交互一样。
谢谢。
最佳答案
在onAccessibilityEvent中,您需要首先捕获输入字段,然后用文本填充它,然后单击“发送”(如@lewil ngah所述)
AccessibilityNodeInfo source = event.getSource();
if (source != null) {
//capture the EditText simply by using FOCUS_INPUT (since the EditText has the focus), you can probably find it with the viewId input_field
AccessibilityNodeInfo inputNode = source.findFocus(AccessibilityNodeInfo.FOCUS_INPUT);
if (inputNode != null) {//prepare you text then fill it using ACTION_SET_TEXT
Bundle arguments = new Bundle();
arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,"text to enter");
inputNode.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
}
//"Click" the Send button
List<AccessibilityNodeInfo> list = source.findAccessibilityNodeInfosByText("Send");
for (AccessibilityNodeInfo node : list) {
node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
}
}