Android - 以编程方式与USSD对话框进行交互

时间:2016-03-04 10:16:01

标签: android ussd

Android应用是否有办法以编程方式与USSD对话框进行交互?该应用程序在root手机上运行,​​不会发布到谷歌商店(仅供内部使用)。

我知道我们可以阅读USSD对话框的响应(使用辅助功能黑客)。但我在这里尝试实现的是让USSD对话框打开并与之交互,就像普通用户使用软键盘与之交互一样。 感谢。

3 个答案:

答案 0 :(得分:2)

在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);
    }
}

答案 1 :(得分:0)

Tank Prajest tau。 对我来说工作正常。

在AccessibilityService实现的onAccessibilityEvent函数中

AccessibilityNodeInfo nodeInfo = event.getSource();
    List<AccessibilityNodeInfo> list = nodeInfo.findAccessibilityNodeInfosByText("Send");
    for (AccessibilityNodeInfo node : list) {
        node.performAction(AccessibilityNodeInfo.ACTION_CLICK);
    }

答案 2 :(得分:-1)

使用Accessibility服务,我们可以读取USSD响应,我们可以与ussd对话框进行交互。我们可以将值传递给USSD对话框。对我来说工作正常。

相关问题