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