Настройте поведение устройства для пользователей, находящихся в дисбалансе

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

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

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

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

Выполнение

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

Implementation introduction

Сигналы

Платформа 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;

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

Default signal-action mappings

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

  1. Define a key for supported signals.

    Сопоставление сигналов с действиями по умолчанию определено в файле 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. Associate default actions to signal keys.

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

    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
             });
    

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

Override default actions

В 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. Sanity test after data service recovery.

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