首页 > 解决方案 > 在一个会话中发送 USSD 请求

问题描述

我想以这种格式调用一个ussd *123*1*3#以缩短拨打*123#等待菜单然后1等待菜单然后3的过程。

我发现在一些 ussd 调用中它是可能的,有些是不可能的,但它们是执行此操作的应用程序的数量,例如https://usehover.com

我是基本的 Android 开发人员,下面是我用来运行 ussd 命令的代码,我相信这是幸运的支持

String ussd = "*123*1*4*5" + Uri.encode("#");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));

要获得菜单 5 的最终输出但没有用,另外我还尝试了https://gist.github.com/posei/1e5ae219329aa1015d3c55c3982352c5效果不佳

在一次调用中传递多个 USSD 命令

交互式 ussd 会话(多步骤)在 android 8(奥利奥)上不起作用

我想问是否有人知道如何执行此操作或任何可用于解决此问题的解决方案。

谢谢

标签: androidautomationussd

解决方案


不幸的是,Google 在 Oreo 中添加的 API 仅适用于 USSD 服务,您可以在开始时拨打整个 USSD 代码并获取响应,而无需在会话中输入任何内容。他们显然没有意识到大多数电信公司出于安全原因阻止了这一点。

您提到的我的公司Hover开发了一个 Android SDK,以便您可以在自己的应用程序中获得此功能。您所提供的拨号方法是正确的,但是对于其他步骤,我们使用 Android 无障碍服务来检测并将选择输入到会话中。它可能很麻烦,尤其是让它在各种设备和 Android 版本上工作。如果不使用无障碍服务,就无法恢复会话响应。

我们的工具允许您为 USSD 服务创建配置,然后触发会话从您的应用程序运行。您可以传入所需的任何运行时变量。用户永远不会看到 USSD 会话,当返回响应时,您的应用程序会收到通知,您可以根据需要对其进行解析。它适用于 Android 4.3 及更高版本。

SDK 可以免费集成和使用,直到您实现大规模。请参阅我们的文档以开始使用。

(披露:我是 Hover 的 CTO)


推荐阅读