寻找示例源代码以通过语法管理通过Android应用程序进行Ussd交互,而不显示Ussd提示

问题描述 投票:0回答:1

我正在为服务提供商可通过USSD访问的服务实施自动服务检查。服务被构造为交互式菜单。问题是当前的Android Telephony SDK仅支持单次USSD请求。对于多阶段USSD交互(菜单,没有用于此的API,即发送Ussd响应。

我已经尝试使用Telephony API来实现,该API对于单次Ussd请求很有效。但是,服务提供商不支持单次Ussd交互(完整路径Ussd字符串);您必须从主菜单中浏览所选的选项。

telephonyManager =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

    final Handler handler = new Handler();

    final TelephonyManager.UssdResponseCallback callback = new TelephonyManager.UssdResponseCallback() {
        @Override
        public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {
            super.onReceiveUssdResponse(telephonyManager, request, response);
            //Log.e(TAG, response.toString());
            //ussdScreen.setText(response.toString());
        }

        @Override
        public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {
            super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);
            String msg = "Ussd failed with code: " + failureCode + ", for request: " + request;
            Log.e(TAG, msg);
            //Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
        }
    };

    dial = findViewById(R.id.dial);
    dial.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dial.setEnabled(false);
            dial(code.getText().toString(), callback, handler);
        }
    });

    ussdScreen = findViewById(R.id.ussdScreen);
    code = findViewById(R.id.code);

所需的功能是具有交互式菜单。一旦Ussd请求返回响应,就应该有一种方法来响应该响应(Ussd提示),依此类推,直到最后一个屏幕,具体取决于所选的路径(选项)

android navigation ussd
1个回答
0
投票

[很遗憾,您的评估是正确的,即使从Android 10开始,Google在Oreo中添加的API也仅适用于USSD服务,您可以在开始时拨打整个USSD代码并获取响应,而无需在会话中输入任何内容。电信公司出于安全原因通常会阻止这种情况;目前尚不清楚为什么Google似乎没有意识到这一点。他们的API似乎旨在处理多步骤用例,但正如您发现的那样,显然不起作用。

我的公司Hover开发了一个Android SDK,该SDK使用可访问性服务来运行多步USSD会话,并使其似乎在您的应用程序中发生。您可以为USSD服务创建配置,触发会话以从您的应用运行,并传入所需的任何运行时变量。用户永远不会看到USSD会话,并且在返回响应时会通知您的应用程序,您可以根据需要对其进行解析。它适用于Android 4.3及更高版本。

SDK可以自由集成和使用,直到您大规模使用。请参阅我们的docs开始使用。

(公开:我是Hover的CTO)

© www.soinside.com 2019 - 2024. All rights reserved.