Я пытаюсь использовать TelephonyManager.UssdResponseCallback и перехватывать USSD-запрос. Мой код:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, 0);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Handler handler = new Handler();
TelephonyManager.UssdResponseCallback responseCallback = new TelephonyManager.UssdResponseCallback() {
@Override
public void onReceiveUssdResponse(TelephonyManager telephonyManager, String request, CharSequence response) {
super.onReceiveUssdResponse(telephonyManager, request, response);
Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onReceiveUssdResponseFailed(TelephonyManager telephonyManager, String request, int failureCode) {
super.onReceiveUssdResponseFailed(telephonyManager, request, failureCode);
Toast.makeText(MainActivity.this, String.valueOf(failureCode), Toast.LENGTH_SHORT).show();
}
};
telephonyManager.sendUssdRequest("*123#", responseCallback, handler);
}
});
}
Но каждый раз получал "USSD_RETURN_FAILURE". Есть ли способ проверить USSD на эмуляторе? Или в моем коде есть ошибка?
USSD_RETURN_FAILURE
, запрос на самом деле работает, но результат из сети находится не вonReceiveUssdResponse
, а в переопределенном методеsendUssdRequest
, называемомonReceiveResult
.... Если вы найдете способ обойти это, позвольте мне знаю ... Проблема может быть где-то в том, чтоsendUssdRequest
не может разобрать предоставленную ему строку ussd - person Jason Krs   schedule 28.05.2018sendUssdRequest
не знает, как работать с мультисессионным USSD-запросом, поэтому он просто идет наUSSD_FAILURE_REQUEST
- person Jason Krs   schedule 28.05.2018