Зробити USSD дзвінок на Android

Щоб спочатку перевірити баланс, я повинен здійснити виклик * xxx # , після чого я отримаю відповідь з кількома параметрами, щоб вибрати з і після введення конкретного номера, я отримаю баланс.

Який код я можу використовувати для цього в моєму додатку Android?

Набір номера * xxx * x # дає мені помилку.

Нижче мій код, який чудово працює для викликів * xxx #:

String encodedHash = Uri.encode("#");
String ussd = "*" + encodedHash + lCallNum + encodedHash;
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));
6
Можливі дублікати stackoverflow.com/questions/11157828/&hellip ; Перевірити це питання з переповненням стека.
додано Автор S List, джерело
Надсилання коду USSD не збігається з набором номера. У вас є інтерфейс Android для USSD? У відповідь на це питання ясно, що станом на листопад 2012 року не було адекватного інтерфейсу USSD. Чи змінилася ця ситуація зараз?
додано Автор S List, джерело
Здається, що проблема USSD ще не вирішена.
додано Автор S List, джерело
Повідомлення USSD не є стандартними, тому сам формат повідомлень залежить від того, що було визначено оператором або користувачем USSD.
додано Автор S List, джерело
Це не є можливим дублікат зазначеного вище питання. Я хочу знати, який формат коду USSD для вищевказаного сценарію, коли на наборі * XXX # дає мені список можливостей, таких як 1.Prepaid 2.Internet і так далі .. а при введенні 1 я отримую інший набір варіантів вибору, як ввести 1 для балансу 2 за щось і так далі ..
додано Автор AndroGeek, джерело

7 Відповіді

Це працює для мене:

private Uri ussdToCallableUri(String ussd) {

    String uriString = "";

    if(!ussd.startsWith("tel:"))
        uriString += "tel:";

    for(char c : ussd.toCharArray()) {

        if(c == '#')
            uriString += Uri.encode("#");
        else
            uriString += c;
    }

    return Uri.parse(uriString);
}

Тоді в робочому коді:

Intent callIntent = new Intent(Intent.ACTION_CALL, ussdToCallableUri(yourUSSDCodeHere));
startActivity(callIntent);
13
додано
Замість цього з'явився лол-скайп ..
додано Автор Muhamed Krlić, джерело

Не забудьте додати дозвіл, він вирішить проблему скайпу: P


5
додано

Important thing to remember :

If your are targeting Android Marshmallow (6.0) or higher then you need to request Manifest.permission.CALL_PHONE permission at runtime

3
додано
після дозволу це не працює
додано Автор Pragati Singh, джерело

Спробуйте це, я не протестував, але повинен працювати.

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + Uri.encode("*3282#")));
startActivity(intent);
3
додано
String ussd = "*XXX*X" + Uri.encode("#");
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ussd)));

це ідеально підходить мені. просто розмістіть перший букет, оскільки він потім кодує # , щоб мати повний * XXX * X # . це, безумовно, допоможе

3
додано
Ви зможете отримати баланс телефону, чи можете ви допомогти мені з деякими посиланнями та фрагментами коду @ AndroGeek
додано Автор Srishti Roy, джерело

Використовуйте цей код. Це працює для мене:

Intent intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse(Uri.parse("tel:" + "*947")+Uri.encode("#")));
    startActivity(intent);
1
додано
не працює цей код
додано Автор Pragati Singh, джерело

Використовуйте цей код, він працює

Intent callIntent = new Intent(Intent.ACTION_CALL);
            String ussdCode = "*" + 2 + Uri.encode("#");
            callIntent.setData(Uri.parse("tel:" +ussdCode));

            if (ActivityCompat.checkSelfPermission(MainActivity.this,
                    Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
            startActivity(callIntent);

Додати цей рядок у файл маніфеста


0
додано
android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.