A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Implementación de los planes de datos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Android 9 permite que los operadores proporcionen directamente detalles confiables del plan a los usuarios en la app de Configuración para reducir la confusión de los usuarios y las llamadas de asistencia. En dispositivos con Android 4.0 y versiones posteriores, los usuarios pueden configurar manualmente los detalles de su plan de datos específico del operador en la app de Configuración, por ejemplo, establecer advertencias y límites para administrar su uso de datos.
Configuración por operador
Para configurar planes de datos, los operadores pueden agregar funcionalidad a sus apps para Android existentes con las APIs de SubscriptionPlan
.
Las APIs están diseñadas para admitir una amplia variedad de tipos de planes de datos, incluidos los planes recurrentes y no recurrentes, y los planes que cambian con el tiempo.
Este es un ejemplo de cómo configurar un tipo común de plan de datos que se repite mes a mes:
SubscriptionManager sm =
context.getSystemService(SubscriptionManager.class);
sm.setSubscriptionPlans(subId, Lists.newArrayList(
SubscriptionPlan.Builder.createRecurringMonthly(
ZonedDateTime.parse("2016-12-03T10:00:00Z"))
.setTitle("G-Mobile")
.setDataLimit(4_000_000_000L,
SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)
.setDataUsage(200_493_293L, dataUsageTimestamp)
.build()));
El dispositivo solo permite que una app configure planes de datos en una de las siguientes condiciones:
- La tarjeta SIM definió de forma explícita una app que puede administrarla, como lo define
SubscriptionManager.canManageSubscription()
.
- El operador envió el valor
KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
a través de CarrierConfigManager
para indicar qué app puede administrar los planes de datos del operador.
- El dispositivo tiene una app integrada en la imagen del sistema que tiene el permiso
MANAGE_SUBSCRIPTION_PLANS
.
Las dos primeras condiciones permiten que el usuario instale la app del operador sin necesidad de que esté preinstalada en la imagen del sistema de fábrica.
El SO aplica (y la CDD exige) que todos los detalles del plan de datos configurados estén protegidos y solo estén disponibles para la app del operador que proporcionó los detalles al SO originalmente.
Se sugiere que una app de operador use un servicio de mantenimiento inactivo para actualizar los detalles del plan de datos a diario, pero los operadores pueden usar una amplia variedad de mecanismos, como recibir detalles del plan de datos a través de mensajes SMS internos del operador. Los servicios de mantenimiento inactivo se implementan mejor con un trabajo JobScheduler
que usa setRequiresDeviceIdle()
y setRequiresCharging()
.
Uso según el SO
El SO usa los detalles del plan de datos que proporcionan las APIs de SubscriptionPlan de las siguientes maneras:
- Los detalles del plan se muestran a través de la app de Configuración para mostrarles a los usuarios un uso preciso de los datos y proporcionar vínculos directos a la app del operador para oportunidades de actualización o venta incremental.
- Los umbrales de advertencia de uso de datos y de notificación de límite se configuran automáticamente según los detalles del plan. La advertencia se establece en el 90% del límite.
- Si el operador indica temporalmente que la red está “congestionada”, el SO retrasa las tareas de JobScheduler que se pueden cambiar de hora, lo que reduce la carga en la red del operador.
- Si el operador indica temporalmente que la red es "no medida", el SO puede informar que la conexión celular es "no medida" hasta que el operador borre la anulación o hasta que se alcance el valor de tiempo de espera (si se proporciona).
- Cuando se compara el uso actual de datos del usuario con el límite general de datos, el SO estima el uso normal de datos del usuario al final del ciclo de facturación y asigna de forma conservadora el 10% de los datos excedentes para mejorar la experiencia del usuario, por ejemplo, permitiendo que las apps usen datos de varios segmentos.
Personalización y validación
La app de Configuración de Android muestra todos los detalles del plan de datos configurado por el operador, lo que garantiza que los usuarios vean el estado más preciso de su relación con el operador y les ofrece una ruta de acceso a la app del operador para actualizar su plan. Se recomienda a los fabricantes de dispositivos que elijan personalizar la app de Configuración que sigan mostrando estos detalles.
android.telephony.cts.SubscriptionManagerTest
prueba las APIs de SubscriptionManager
que se describen en esta página, lo que garantiza que las apps del operador puedan configurar los detalles del plan de datos y que los cambios se propaguen dentro del SO.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-26 (UTC)"],[],[],null,["# Implement data plans\n\nAndroid 9 lets carriers directly provide authoritative\nplan details to users in the Settings app to reduce user confusion and support\ncalls. On devices running Android 4.0 and higher, users are able to manually\nconfigure their carrier-specific data plan details in the Settings app, for\nexample, setting warnings and limits to manage their data usage.\n\nConfiguration by carrier\n------------------------\n\nTo configure data plans, carriers can add functionality to their existing\nAndroid apps using the\n[`SubscriptionPlan` APIs](https://developer.android.com/reference/android/telephony/SubscriptionPlan.Builder).\nThe APIs are designed to support a wide range of data plan types, including both\nrecurring and non-recurring plans, and plans that change over time.\n\nHere's an example of how to configure a common type of data plan that recurs\nmonthly: \n\n SubscriptionManager sm =\n context.getSystemService(SubscriptionManager.class);\n sm.setSubscriptionPlans(subId, Lists.newArrayList(\n SubscriptionPlan.Builder.createRecurringMonthly(\n ZonedDateTime.parse(\"2016-12-03T10:00:00Z\"))\n .setTitle(\"G-Mobile\")\n .setDataLimit(4_000_000_000L,\n SubscriptionPlan.LIMIT_BEHAVIOR_BILLED)\n .setDataUsage(200_493_293L, dataUsageTimestamp)\n .build()));\n\nThe device only lets an app configure data plans under one of these conditions:\n\n- The SIM card has explicitly defined an app that can manage it, as defined by [`SubscriptionManager.canManageSubscription()`](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#canManageSubscription(android.telephony.SubscriptionInfo)).\n- The carrier has pushed the [`KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING`](https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING) value via `CarrierConfigManager` to indicate which app can manage the carrier's data plans.\n- The device has an app built into the system image that has the `MANAGE_SUBSCRIPTION_PLANS` permission.\n\nThe first two conditions enable the carrier app to be installed by the user,\nwithout requiring that it be pre-installed into the system image at the factory.\nThe OS enforces (and the CDD requires) that all configured data plan details are\nprotected and are only made available to the carrier app that originally\nprovided the details to the OS.\n\nOne suggested design is for a carrier app to use an idle maintenance service to\nupdate data plan details on a daily basis, but carriers are free to use a wide\nrange of mechanisms, such as receiving data plan details through carrier-internal\nSMS messages. Idle maintenance services are best implemented with a\n`JobScheduler` job that uses\n[`setRequiresDeviceIdle()`](https://developer.android.com/reference/android/app/job/JobInfo.Builder#setRequiresDeviceIdle(boolean))\nand\n[`setRequiresCharging()`](https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiresCharging(boolean)).\n\nUsage by OS\n-----------\n\nThe OS uses the data plan details provided by the SubscriptionPlan APIs in the\nfollowing ways:\n\n- The plan details are surfaced via the Settings app to display accurate data usage to users and to provide [direct deep links into the carrier app](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#ACTION_MANAGE_SUBSCRIPTION_PLANS) for upgrade/upsell opportunities.\n- The data usage warning and limit notification thresholds are automatically configured based on the plan details; the warning is set to 90% of the limit.\n- If the carrier temporarily indicates the network is [\"congested\"](https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionOverrideCongested(int,%20boolean,%20long)), the OS delays JobScheduler jobs that can be time-shifted, reducing the load on the carrier network.\n- If the carrier temporarily indicates the network is [\"unmetered\"](https://developer.android.com/reference/android/telephony/SubscriptionManager#setSubscriptionOverrideUnmetered(int,%20boolean,%20long)), the OS can report the cellular connection as \"unmetered\" until the carrier clears the override, or until the timeout value (if provided) is reached.\n- By comparing the user's current data usage with the overall data limit, the OS estimates the user's normal data usage at the end of the billing cycle and conservatively allocates 10% of any surplus data to improve the user experience, for example, by letting apps use multi-path data.\n\nCustomization and validation\n----------------------------\n\nThe Android Settings app displays all carrier-configured data plan details,\nensuring that users see the most accurate status of their carrier relationship,\nand offering users a path into the carrier app to upgrade their plan. Device\nmanufacturers choosing to customize the Settings app are recommended to continue\nsurfacing these details.\n\nThe `SubscriptionManager` APIs described on this page are tested by\n`android.telephony.cts.SubscriptionManagerTest`, which ensures that data plan\ndetails can be configured by carrier apps and that changes are propagated within\nthe OS."]]