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 要求) 保護所有已設定的資料方案詳細資料,並且僅提供給最初向作業系統提供詳細資料的電信業者應用程式。
建議的設計之一是,電信業者應用程式可使用閒置維護服務,每天更新數據方案詳細資料,但電信業者可自由使用各種機制,例如透過電信業者內部簡訊接收數據方案詳細資料。最適合透過使用 setRequiresDeviceIdle()
和 setRequiresCharging()
的 JobScheduler
工作實作閒置維護服務。
各 OS 的用量
OS 會透過下列方式使用 SubscriptionPlan API 提供的數據方案詳細資料:
- 我們會透過「設定」應用程式顯示方案詳細資料,向使用者顯示準確的資料用量,並提供直接連結至電信業者應用程式的深層連結,提供升級/加購機會。
- 系統會根據方案詳細資料自動設定數據用量警告和限制通知門檻,警告值設為限制的 90%。
- 如果電信業者暫時指出網路處於「壅塞」狀態,OS 會延遲可進行時間轉移的 JobScheduler 工作,進而降低電信業者網路的負載。
- 如果電信業者暫時指出網路為「不計量」,作業系統會將行動網路連線回報為「不計量」,直到電信業者清除覆寫值,或達到逾時值 (如有提供) 為止。
- 透過比較使用者目前的資料用量與整體資料限制,OS 會預估使用者在結帳週期結束時的正常資料用量,並保守地分配任何多餘資料的 10%,以改善使用者體驗,例如讓應用程式使用多路徑資料。
自訂和驗證
Android 設定應用程式會顯示所有電信業者設定的數據方案詳細資料,確保使用者能看到最準確的電信業者關係狀態,並提供使用者前往電信業者應用程式升級方案的途徑。建議選擇自訂「設定」應用程式的裝置製造商繼續顯示這些詳細資料。
本頁說明的 SubscriptionManager
API 會由 android.telephony.cts.SubscriptionManagerTest
測試,確保電信業者應用程式可以設定數據方案詳細資料,且相關變更會在 OS 中全面生效。