Как настроить поведение устройств для пользователей с несбалансированным состоянием

Устройства Android без баланса позволяют передавать сетевой трафик, поэтому операторам связи необходимо внедрять протоколы для устранения этой проблемы. В Android реализовано общее решение, которое позволяет операторам связи указывать, когда на устройстве закончились средства.

Платформа Android предоставляет операторское приложение по умолчанию с поведением по умолчанию для снижения трафика на основе сигнала обнаружения страницы входа. Кроме того, операторы связи и производители устройств могут настраивать его поведение с низкими затратами и высокой гибкостью.

Примеры и источник

Приложение оператора по умолчанию находится вplatform/frameworks/base/packages/CarrierDefaultApp/.

Реализация

Приложение оператора по умолчанию настроено так, чтобы обеспечивать удобство работы с ненастроенными операторами. Операторы могут использовать этот режим работы по умолчанию. Они также могут переопределить режим работы по умолчанию, добавив сопоставления сигналов и действий в XML-файл конфигурации оператора. Они могут отказаться от приложения по умолчанию и использовать привилегии UICC с собственным отдельным приложением оператора.

Введение в реализацию

Сигналы

Фреймворк Android поддерживает настройку действий для следующих параметризованных сигналов:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED

Эти сигналы находятся в файле frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java.

Доступные действия

Приложение оператора связи по умолчанию определяет набор поддерживаемых действий, которые можно сопоставить с поддерживаемыми сигналами. Они определены в CarrierActionUtils.java:

    public static final int CARRIER_ACTION_ENABLE_METERED_APNS               = 0;
    public static final int CARRIER_ACTION_DISABLE_METERED_APNS              = 1;
    public static final int CARRIER_ACTION_DISABLE_RADIO                     = 2;
    public static final int CARRIER_ACTION_ENABLE_RADIO                      = 3;
    public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION          = 4;
    public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
    public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS          = 6;

Примечание. Если оператор использует собственное отдельное приложение, он может реализовать поддержку сигналов, не упомянутых в этом разделе. Они также могут определять и настраивать собственные действия.

Сопоставления сигналов и действий по умолчанию

Чтобы настроить действия по умолчанию, выполните следующие действия:

  1. Укажите ключ для поддерживаемых сигналов.

    Сопоставления сигналов с действиями по умолчанию определены в файле CarrierConfigManager.java. У каждого поддерживаемого сигнала есть ключ:

    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array";
    public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY =
    "carrier_default_actions_on_dcfailure_string_array";
  2. Связывать действия по умолчанию с ключами сигналов.

    Идентификаторы действий по умолчанию связаны с ключами сигналов:

    sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY,                new String[]{
                    "1, 4"
                    //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION
                    // 4: CARRIER_ACTION_DISABLE_METERED_APNS
             });
    

    Телефония сопоставляет эти действия с соответствующими сигналами.

Как переопределить действия по умолчанию

Вы можете задать собственные действия для поддерживаемых сигналов в XML-файле конфигурации оператора, связав идентификаторы действий с ключами сигналов (определенными в CarrierConfigManager.java). Например, следующее сопоставление отключает APN с лимитом трафика и показывает уведомление портала при переадресации:

<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
            <item value="1" />
            <item value="4" />
</string-array>

Телекоммуникационная платформа загружает эти конфигурации и переопределяет действия по умолчанию.

Проверка

Для этой функции нет тестов CTS, CTS Verifier и GTS.

Чтобы проверить функцию, выполните следующие тесты:

  1. Проверьте уведомление оператора связи о том, что баланс устройства отрицательный.
  2. Проверьте, ограничивается ли перенаправление трафика при отрицательном балансе и отключенном Wi-Fi.
  3. Убедитесь, что сетевой трафик отключен и при отсутствии средств на балансе появляется уведомление.
  4. Проверьте функцию голосового вызова/VoLTE при отрицательном балансе.
  5. Убедитесь, что видеовызовы заблокированы, если баланс отрицательный.
  6. Убедитесь, что при включенном Wi-Fi пользователь может просматривать веб-страницы и что трафик браузера не переключается на сетевой трафик, когда баланс исчерпан.
  7. Проверьте работу Wi-Fi, WFC и Bluetooth в состоянии дисбаланса.
  8. Отключите Wi-Fi. Проверьте интерфейс уведомления о балансе и убедитесь, что обычный трафик браузера не перенаправляется на сайт регистрации оператора связи. Проверьте, что при нажатии на ссылку в уведомлении браузер переходит на сайт регистрации оператора связи.
  9. Убедитесь, что при включении и отключении режима полета состояние ограничения трафика не сбрасывается.
  10. Убедитесь, что при замене работающей SIM-карты состояние сетевого трафика сбрасывается.
  11. Убедитесь, что после повторной установки SIM-карты с отрицательным балансом перенаправление трафика возобновляется и снова применяется ограничение сетевого трафика.
  12. Убедитесь, что после перезагрузки телефона переадресация снова активируется, а также восстанавливаются ограничение трафика и интерфейс уведомлений.
  13. Нажмите на уведомление captiveportal. Убедитесь, что установлено подключение к сети с ограниченным доступом, чтобы пользователь мог добавить средства.
  14. Убедитесь, что после пополнения баланса SIM-карты или ее повторной активации трафик мобильной сети восстанавливается, а ссылка на оператора связи и уведомление об отсутствии средств исчезают.
  15. Проверка работоспособности после восстановления сервиса данных.

В приложении по умолчанию есть несколько примеров модульных тестов и скрипт для их запуска (см. tests/runtest.sh). Если вы реализуете собственную версию или поведение, добавьте эти изменения в специальные модульные тесты.