Android上的请求和多步骤响应ussd

Android上的请求和多步骤响应ussd,android,ussd,Android,Ussd,我们正在开发一个应用程序,它需要与各种对手USSD菜单交互。(USSD是GSM的非结构化补充业务数据)。我一直在寻找一个解决办法,但毫无结果。这可能是不可能的 我们需要能够启动ussd会话,例如拨打*150*00# 手机接收USSD响应-理想情况下,我们会立即隐藏或自动响应,以便它简单地闪烁进出 我们自动化一个响应,更常见的是一系列响应、接收、响应,直到完成 然后,该应用程序将自动接收到的短信刮入 这需要在oreo和post之前的android版本中发挥理想的作用,因此我假设使用accessib

我们正在开发一个应用程序,它需要与各种对手USSD菜单交互。(USSD是GSM的非结构化补充业务数据)。我一直在寻找一个解决办法,但毫无结果。这可能是不可能的

我们需要能够启动ussd会话,例如拨打*150*00#

手机接收USSD响应-理想情况下,我们会立即隐藏或自动响应,以便它简单地闪烁进出

我们自动化一个响应,更常见的是一系列响应、接收、响应,直到完成

然后,该应用程序将自动接收到的短信刮入

这需要在oreo和post之前的android版本中发挥理想的作用,因此我假设使用accessibility services pre和ussd api post。API 26对于一步接收响应似乎可以正常工作,但从我阅读的内容来看,对于多步接收响应则不行


非常感谢您的帮助。

您可以将此库用于多步骤ussd。它利用可访问性服务来删除、填充和取消ussd对话框

假设您要执行此ussd序列*122#->1->最终结果

这就是你能做到的

USSDApi ussdApi = USSDController.getInstance(context);
ussdApi.callUSSDInvoke("*122#", map, new 
USSDController.CallbackInvoke() {
    @Override
    public void responseInvoke(String message) {
        // message has the response for *122#
        ussdApi.send("1", new USSDController.CallbackMessage(){
            @Override
            public void responseMessage(String message) {
                // message has the response for 1
            }
        });
    }

   @Override
    public void over(String message) {
       // message contains the final result
    }
});
可能重复的