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

У меня есть приложение, которое отправляет некоторые 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, а не на эмуляторе.

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


person Andrey    schedule 22.06.2012    source источник


Ответы (1)


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

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

Это позволяет номеронабирателю правильно интерпретировать значение #.

person ChocPanda    schedule 22.06.2013