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

标签 android ussd

<分区>

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

我知道我们可以读取 USSD 对话框的响应(使用辅助功能 hack)。但我在这里想要实现的是让 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);
    }
}

关于Android - 以编程方式与 USSD 对话框交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35793378/

相关文章:

Android 多嵌套 DialogFragment

java - 如何监控我的应用程序是否暂停或恢复?

android - 通过 Android 中的 Intent 选择任何类型的文件

android - BroadcastReceiver 会耗电吗?

Android - 如何以编程方式检查手机是否有信用?

node.js - Facebook 完全在服务器端登录

Android USSD 以编程方式无法正常工作

java - Wildfly 或 JBoss EAP 7 上的 Restcomm USSD 网关

c# - 在 C#.net 应用程序中发送短信和 ussd

android - WebView 无法打开某些 https URL。显示空白屏幕