Устройства Android без баланса позволяют передавать сетевой трафик, поэтому операторам связи необходимо внедрять протоколы для устранения этой проблемы. В Android реализовано общее решение, которое позволяет операторам связи указывать, когда на устройстве закончились средства.
Платформа Android предоставляет операторское приложение по умолчанию с поведением по умолчанию для снижения трафика на основе сигнала обнаружения страницы входа. Кроме того, операторы связи и производители устройств могут настраивать его поведение с низкими затратами и высокой гибкостью.
Примеры и источник
Приложение оператора по умолчанию находится вplatform/frameworks/base/packages/CarrierDefaultApp/.
Реализация
Приложение оператора по умолчанию настроено так, чтобы обеспечивать удобство работы с ненастроенными операторами. Операторы могут использовать этот режим работы по умолчанию. Они также могут переопределить режим работы по умолчанию, добавив сопоставления сигналов и действий в XML-файл конфигурации оператора. Они могут отказаться от приложения по умолчанию и использовать привилегии UICC с собственным отдельным приложением оператора.
Введение в реализацию
Сигналы
Фреймворк Android поддерживает настройку действий для следующих параметризованных сигналов:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTEDTelephonyIntents.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;Примечание. Если оператор использует собственное отдельное приложение, он может реализовать поддержку сигналов, не упомянутых в этом разделе. Они также могут определять и настраивать собственные действия.
Сопоставления сигналов и действий по умолчанию
Чтобы настроить действия по умолчанию, выполните следующие действия:
- Укажите ключ для поддерживаемых сигналов.
Сопоставления сигналов с действиями по умолчанию определены в файле
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";
- Связывать действия по умолчанию с ключами сигналов.
Идентификаторы действий по умолчанию связаны с ключами сигналов:
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.
Чтобы проверить функцию, выполните следующие тесты:
- Проверьте уведомление оператора связи о том, что баланс устройства отрицательный.
- Проверьте, ограничивается ли перенаправление трафика при отрицательном балансе и отключенном Wi-Fi.
- Убедитесь, что сетевой трафик отключен и при отсутствии средств на балансе появляется уведомление.
- Проверьте функцию голосового вызова/VoLTE при отрицательном балансе.
- Убедитесь, что видеовызовы заблокированы, если баланс отрицательный.
- Убедитесь, что при включенном Wi-Fi пользователь может просматривать веб-страницы и что трафик браузера не переключается на сетевой трафик, когда баланс исчерпан.
- Проверьте работу Wi-Fi, WFC и Bluetooth в состоянии дисбаланса.
- Отключите Wi-Fi. Проверьте интерфейс уведомления о балансе и убедитесь, что обычный трафик браузера не перенаправляется на сайт регистрации оператора связи. Проверьте, что при нажатии на ссылку в уведомлении браузер переходит на сайт регистрации оператора связи.
- Убедитесь, что при включении и отключении режима полета состояние ограничения трафика не сбрасывается.
- Убедитесь, что при замене работающей SIM-карты состояние сетевого трафика сбрасывается.
- Убедитесь, что после повторной установки SIM-карты с отрицательным балансом перенаправление трафика возобновляется и снова применяется ограничение сетевого трафика.
- Убедитесь, что после перезагрузки телефона переадресация снова активируется, а также восстанавливаются ограничение трафика и интерфейс уведомлений.
- Нажмите на уведомление captiveportal. Убедитесь, что установлено подключение к сети с ограниченным доступом, чтобы пользователь мог добавить средства.
- Убедитесь, что после пополнения баланса SIM-карты или ее повторной активации трафик мобильной сети восстанавливается, а ссылка на оператора связи и уведомление об отсутствии средств исчезают.
- Проверка работоспособности после восстановления сервиса данных.
В приложении по умолчанию есть несколько примеров модульных тестов и скрипт для их запуска (см. tests/runtest.sh). Если вы реализуете собственную версию или поведение, добавьте эти изменения в специальные модульные тесты.