在一个会话中发送USSD请求

时间:2019-07-08 07:38:36

标签: android automation ussd

我想用这种格式的* 123 * 1 * 3#呼叫ussd,以缩短* 123#等待菜单,然后1等待菜单,然后3的拨号过程。

我发现在某些usdd调用中这是可能的,而在某些情况下是不可能的,但是它们是完成此操作的应用程序的数量,例如https://usehover.com

我是基本的Android开发人员,下面是我用来运行usdd命令的代码,我相信会得到支持

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,但效果不佳

Passing multiple USSD commands in a single call

interactive ussd session(multi step) does not work on android 8(Oreo)

我想问是否有人知道该怎么做或可以用来解决这个问题的任何解决方法。

谢谢

3 个答案:

答案 0 :(得分:2)

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

您提到的我的公司Hover开发了一个Android SDK,以便您可以在自己的应用中使用此功能。您提供的拨号方法是正确的,但是对于其他步骤,我们使用Android可访问性服务来检测会话并将其输入到会话中。它可能非常繁琐,尤其是使其可以在各种设备和Android版本上运行。如果不使用辅助功能服务,就无法获取会话响应。

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

SDK是免费集成和使用的,直到您大规模使用为止。请参阅我们的docs开始使用。

(披露:我是Hover的CTO)

答案 1 :(得分:0)

不幸的是,这不是客户端问题,而是服务器问题。 电信公司托管的USSD服务必须允许这种查询,并且需要解析它们,检查参数的有效性等等。

答案 2 :(得分:0)

有一个很棒的服务叫做 AutoUssd (https://autoussd.com) 可以让你做到这一点。

SDK 允许您创建隐藏在布局文件后面的交互式多步骤 USSD 会话,会话结果通过回调报告给您的应用。

请检查它是否符合您的需求...