Los dispositivos Android sin saldo de datos permiten el tráfico de red, lo que requiere que los operadores y las empresas de telecomunicaciones implementen protocolos de mitigación. Android implementa una solución genérica que permite a los operadores y las empresas de telecomunicaciones indicar cuándo un dispositivo se quedó sin saldo.
La plataforma de Android proporciona una app de operador predeterminada con un comportamiento predeterminado para la mitigación del tráfico según el indicador de detección de portal cautivo. También brinda a los operadores y OEM la oportunidad de personalizar el comportamiento con un costo bajo y gran flexibilidad.
Ejemplos y fuente
La app de operador predeterminada se encuentra enplatform/frameworks/base/packages/CarrierDefaultApp/.
Implementación
La app de operador predeterminada está configurada para proporcionar una mejor experiencia para los operadores no configurados de forma predeterminada. Los operadores pueden usar este comportamiento predeterminado. También pueden anular el comportamiento predeterminado agregando asignaciones de acción y señal al archivo XML de configuración del operador. Pueden decidir no usar la app predeterminada y, en su lugar, usar privilegios de la UICC con su propia app independiente del operador.
Introducción a la implementación
Signals
El framework de Android admite la configuración de acciones para los siguientes indicadores parametrizados:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Estos indicadores se encuentran en frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Acciones compatibles
La app de operador predeterminada define un conjunto de acciones admitidas que se pueden asignar a indicadores admitidos. Estos se definen en 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;
Nota: Si un operador implementa su propia app independiente, puede implementar la compatibilidad con indicadores distintos de los que se mencionan en esta sección. También pueden definir y configurar sus propias acciones.
Asignaciones predeterminadas de acción y señal
Para configurar las acciones predeterminadas, sigue este proceso:
- Define una clave para los indicadores admitidos.
Las asignaciones predeterminadas de indicadores a acciones se definen en
CarrierConfigManager.java
. Cada uno de los indicadores admitidos tiene una clave: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";
- Asocia acciones predeterminadas a las claves de sugerencias.
Los IDs de acción predeterminados están asociados a las claves de indicadores:
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 });
El framework de telefonía asigna estas acciones a los indicadores correspondientes.
Cómo anular las acciones predeterminadas
Puedes definir acciones personalizadas para los indicadores admitidos en el archivo XML de configuración del operador asociando IDs de acción a las claves de indicadores (definidas en CarrierConfigManager.java
). Por ejemplo, la siguiente asignación inhabilita las APN medidas y muestra una notificación del portal en el redireccionamiento:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
El framework de telefonía carga estos parámetros de configuración y anula las acciones predeterminadas.
Validación
No hay pruebas de CTS, verificador del CTS ni GTS para esta función.
Usa estas pruebas de validación manual para validar la función:
- Valida la notificación de señal de dispositivo sin saldo de la empresa de telecomunicaciones.
- Verifica la limitación del redireccionamiento del tráfico durante el estado de desequilibrio y con el Wi-Fi desactivado.
- Verifica que el tráfico de red esté desactivado y que la IU de notificaciones aparezca durante el estado de falta de equilibrio.
- Valida la función de llamadas de voz o VoLTE durante el estado de falta de saldo.
- Verifica que las videollamadas estén bloqueadas en el estado de saldo insuficiente.
- Con el Wi-Fi activado, verifica que el usuario pueda seguir navegando por la Web y que el tráfico de navegación no active el tráfico de red mientras se encuentra en el estado de desequilibrio.
- Valida las funciones de Wi-Fi, WFC y Bluetooth durante el estado de desequilibrio.
- Desactiva el Wi-Fi. Verifica la IU de notificación de saldo insuficiente y que el tráfico de navegación normal no se redireccione al sitio web de registro de la empresa de telecomunicaciones. Verifica que, al hacer clic en el vínculo de la IU de la notificación, el navegador se dirija al sitio web de registro de la empresa de telecomunicaciones.
- Verifica que activar o desactivar el modo de avión no restablezca el estado de limitación del tráfico.
- Verifica que el intercambio de una SIM en servicio restablezca el estado del tráfico de red.
- Verifica que, al volver a insertar la SIM sin saldo, se reinicie el redireccionamiento del tráfico y se vuelva a obtener la limitación del tráfico de red.
- Verifica que reiniciar el teléfono reactive el redireccionamiento y restablezca la IU de la notificación y la limitación del tráfico.
- Presiona la notificación "captiveportal". Verifica que se haya establecido una conexión de red restringida para permitir que el usuario agregue créditos.
- Verifica que la recarga o reactivación del saldo de la SIM haga que se recupere el tráfico de la red celular y que desaparezcan el vínculo de la empresa de telecomunicaciones y la notificación de falta de saldo.
- Realiza una prueba de integridad después de la recuperación del servicio de datos.
La app predeterminada proporciona algunos ejemplos de pruebas de unidades y una secuencia de comandos para ejecutarlas (consulta tests/runtest.sh
). Cuando implementes una versión o un comportamiento personalizados, debes reflejar esas personalizaciones en pruebas de unidades específicas.