Android 9 允許運營商直接在“設置”應用中向用戶提供權威的計劃詳情,以減少用戶的困惑和支持電話。在運行 Android 4.0 及更高版本的設備上,用戶可以在“設置”應用中手動配置其運營商特定的數據計劃詳細信息,例如,設置警告和限制以管理其數據使用情況。
運營商配置
要配置數據計劃,運營商可以使用SubscriptionPlan
API向其現有 Android 應用程序添加功能。 API 旨在支持廣泛的數據計劃類型,包括經常性和非經常性計劃,以及隨時間變化的計劃。
以下是如何配置每月重複的常見數據計劃類型的示例:
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()));
該設備僅允許應用在以下條件之一下配置數據計劃:
- SIM 卡明確定義了一個可以管理它的應用程序,由
SubscriptionManager.canManageSubscription()
定義。 - 運營商已通過
CarrierConfigManager
推送KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING
值,以指示哪個應用可以管理運營商的數據計劃。 - 該設備在系統映像中內置了一個應用程序,該應用程序具有
MANAGE_SUBSCRIPTION_PLANS
權限。
前兩個條件允許用戶安裝運營商應用程序,而無需在出廠時將其預安裝到系統映像中。操作系統強制(並且 CDD 要求)所有配置的數據計劃詳細信息都受到保護,並且僅對最初向操作系統提供詳細信息的運營商應用程序可用。
一種建議的設計是運營商應用程序使用空閒維護服務來每天更新數據計劃詳細信息,但運營商可以自由使用多種機制,例如通過運營商內部 SMS 消息接收數據計劃詳細信息。空閒維護服務最好通過使用setRequiresDeviceIdle()
和setRequiresCharging()
的JobScheduler
作業來實現。
操作系統使用情況
操作系統通過以下方式使用 SubscriptionPlan API 提供的數據計劃詳細信息:
- 計劃詳細信息通過“設置”應用程序顯示,以向用戶顯示準確的數據使用情況,並提供與運營商應用程序的直接深度鏈接,以獲得升級/追加銷售機會。
- 數據使用警告和限制通知閾值根據計劃詳細信息自動配置;警告設置為限制的 90%。
- 如果運營商暫時表示網絡“擁塞” ,操作系統會延遲可時移的 JobScheduler 作業,從而減少運營商網絡的負載。
- 如果運營商暫時指示網絡“未計量” ,則操作系統可以將蜂窩連接報告為“未計量”,直到運營商清除覆蓋,或者直到達到超時值(如果提供)。
- 通過將用戶當前的數據使用量與總體數據限制進行比較,操作系統會在計費周期結束時估計用戶的正常數據使用量,並保守地分配 10% 的剩餘數據來改善用戶體驗,例如讓應用程序使用多路徑數據。
定制和驗證
Android 設置應用程序顯示所有運營商配置的數據計劃詳細信息,確保用戶看到其運營商關係的最準確狀態,並為用戶提供進入運營商應用程序以升級其計劃的路徑。建議選擇自定義設置應用程序的設備製造商繼續顯示這些詳細信息。
上述SubscriptionManager
API 由android.telephony.cts.SubscriptionManagerTest
測試,確保運營商應用可以配置數據計劃詳細信息,並確保更改在操作系統內傳播。