Странное поведение при отправке USSD-кодов (Android)

1

У меня есть приложение, которое отправляет некоторые коды USSD. В одном типе ситуации, от действий пользователя с интерфейсом, в другом - когда получено некоторое SMS (с подстановочным знаком).

У меня есть код для отправки USSD:

private static void setCallDivert (Context context, String phoneNo) {
    String callForwardString = "**21*" + phoneNo + "#";
    Log.i("Call forward string", callForwardString);

    Intent intentCallForward = new Intent(Intent.ACTION_CALL);
    intentCallForward.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Uri uri2 = Uri.fromParts("tel", callForwardString, "#");
    intentCallForward.setData(uri2);                                
    context.startActivity(intentCallForward);
    divertDbRecord (context, true, phoneNo);
}

Когда он вызывается из метода onClick, он работает нормально.

Когда он вызывается из обработчика SMS, появляется сообщение "Ошибка соединения с переадресацией вызова или неправильный код MMI".

В logcat я вижу запрос. В обеих ситуациях это одно и то же.

Конечно, я тестирую его на реальном телефоне Android, а не на эмуляторе.

Может быть, кто-то может мне помочь?

Теги:
ussd

1 ответ

1

Вам нужно закодировать хэш-код Uri

public static final String encodedHash = Uri.encode("#");

Это позволяет дозвонщику правильно интерпретировать значение #

Ещё вопросы

Сообщество Overcoder
Наверх
Меню