寻找示例源代码以语法方式通过Android应用程序管理Ussd互动,而无需显示Ussd提示

时间:2019-04-24 16:33:20

标签: android navigation ussd

我正在为服务提供商可通过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提示符),依此类推,直到最后一个屏幕,具体取决于所选的路径(选项)

0 个答案:

没有答案