A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Implementare i piani dati
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Android 9 consente agli operatori di fornire direttamente agli utenti dettagli autorevoli sul piano nell'app Impostazioni per ridurre la confusione e le chiamate di assistenza. Sui dispositivi con Android 4.0 e versioni successive, gli utenti possono configurare manualmente i dettagli del piano dati specifico dell'operatore nell'app Impostazioni, ad esempio impostare avvisi e limiti per gestire l'utilizzo dei dati.
Configurazione per operatore
Per configurare i piani dati, gli operatori possono aggiungere funzionalità alle proprie app Android esistenti utilizzando le API SubscriptionPlan
.
Le API sono progettate per supportare un'ampia gamma di tipi di piani dati, inclusi piani ricorrenti e non ricorrenti e piani che cambiano nel tempo.
Ecco un esempio di come configurare un tipo comune di piano dati ricorrente mensile:
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()));
Il dispositivo consente a un'app di configurare i piani dati solo in una delle seguenti condizioni:
Le prime due condizioni consentono all'utente di installare l'app dell'operatore senza che debba essere preinstallata nell'immagine di sistema in fabbrica.
Il sistema operativo applica (e il CDD richiede) che tutti i dettagli del piano dati configurato siano protetti e resi disponibili solo all'app dell'operatore che li ha forniti inizialmente al sistema operativo.
Un design suggerito è che un'app dell'operatore utilizzi un servizio di manutenzione inattivo per
aggiornare quotidianamente i dettagli del piano dati, ma gli operatori sono liberi di utilizzare un'ampia gamma di meccanismi, ad esempio ricevere i dettagli del piano dati tramite messaggi SMS interni all'operatore. I servizi di manutenzione inattiva sono implementati al meglio con un job JobScheduler
che utilizza setRequiresDeviceIdle()
e setRequiresCharging()
.
Utilizzo per sistema operativo
Il sistema operativo utilizza i dettagli del piano dati forniti dalle API SubscriptionPlan nel seguente modo:
- I dettagli del piano vengono visualizzati tramite l'app Impostazioni per mostrare agli utenti dati accurati sull'utilizzo e fornire link diretti all'app dell'operatore per opportunità di upgrade/upsell.
- Le soglie di avviso e di notifica del limite per l'utilizzo dei dati vengono configurate automaticamente in base ai dettagli del piano. L'avviso è impostato sul 90% del limite.
- Se l'operatore indica temporaneamente che la rete è "congestionata", il sistema operativo ritarda i job JobScheduler che possono essere spostati nel tempo, riducendo il carico sulla rete dell'operatore.
- Se l'operatore indica temporaneamente che la rete è "senza misurazione", il sistema operativo può segnalare la connessione di rete come "senza misurazione" finché l'operatore non annulla l'override o fino a quando non viene raggiunto il valore di timeout (se fornito).
- Confrontando l'utilizzo attuale dei dati dell'utente con il limite di dati complessivo, il sistema operativo stima l'utilizzo normale dei dati dell'utente alla fine del ciclo di fatturazione e alloca in modo conservativo il 10% degli eventuali dati in eccesso per migliorare l'esperienza utente, ad esempio consentendo alle app di utilizzare i dati multipath.
Personalizzazione e convalida
L'app Impostazioni di Android mostra tutti i dettagli del piano dati configurato dall'operatore,
assicurando agli utenti di visualizzare lo stato più accurato del loro rapporto con l'operatore,
e offrendo loro un percorso per accedere all'app dell'operatore per eseguire l'upgrade del piano. I produttori di dispositivi che scelgono di personalizzare l'app Impostazioni sono invitati a continuare a mostrare questi dettagli.
Le API SubscriptionManager
descritte in questa pagina vengono testate da
android.telephony.cts.SubscriptionManagerTest
, che garantisce che i dettagli del piano di telefonia
puoi essere configurato dalle app dell'operatore e che le modifiche vengano propagate all'interno
del sistema operativo.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-26 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]