У меня есть приложение, которое отправляет некоторые коды 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, а не на эмуляторе.
Может быть, кто-то может мне помочь?
Вам нужно закодировать хэш-код Uri
public static final String encodedHash = Uri.encode("#");
Это позволяет дозвонщику правильно интерпретировать значение #