Поиск примера исходного кода для грамматического управления Ussd Interactions через приложение Android без отображения запросов Ussd - PullRequest
0 голосов
/ 24 апреля 2019

Я внедряю автоматическую проверку сервисов для сервисов, доступных через USSD от сервис-провайдера.Услуги структурированы как интерактивные меню.Проблема в том, что текущий Android Telephony SDK поддерживает только одноразовый USSD-запрос.Для многоступенчатых USSD-взаимодействий (меню, для этого не существует API, т. Е. Отправить ответ Ussd.

Я попытался реализовать с помощью 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-запрос) и так далее, и так далее, до последнего экрана в зависимости от выбранного пути (опции)

...