实施数据流量套餐

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()));

设备仅允许应用在以下条件之一配置数据流量套餐

前两个条件允许用户安装运营商应用,而无需在出厂时将其预安装到系统映像中。操作系统会强制执行(且 CDD 要求)所有配置的数据套餐详情均受到保护,并且仅对最初向操作系统提供这些详情的运营商应用可用。

一种建议的设计是让运营商应用使用空闲维护服务来每日更新数据套餐详情,但运营商可以自由使用各种机制,例如通过运营商内部短信接收数据套餐详情。空闲维护服务最好通过 JobScheduler 作业来实现,该作业使用 setRequiresDeviceIdle()setRequiresCharging()

操作系统使用情况

操作系统通过以下方式使用 SubscriptionPlan API 提供的数据套餐详情

  • 套餐详情通过“设置”应用呈现,以向用户显示准确的数据用量,并提供指向运营商应用的直接深层链接,以提供升级/追加销售机会。
  • 数据用量警告和限制通知阈值会根据套餐详情自动配置;警告设置为限制的 90%。
  • 如果运营商暂时指示网络“拥塞”,则操作系统会延迟可以延时的 JobScheduler 作业,从而降低运营商网络的负载。
  • 如果运营商暂时指示网络“不限量”,则操作系统可以将蜂窝网络连接报告为“不限量”,直到运营商清除覆盖或达到超时值(如果提供)。
  • 通过将用户的当前数据用量与总数据限制进行比较,操作系统会估算用户在结算周期结束时的正常数据用量,并保守地分配任何剩余数据量的 10% 以改善用户体验,例如,允许应用使用多路径数据。

自定义和验证

Android “设置”应用会显示所有运营商配置的数据套餐详情,确保用户看到其运营商关系的最准确状态,并为用户提供进入运营商应用以升级套餐的途径。建议选择自定义“设置”应用的设备制造商继续呈现这些详情。

本页介绍的 SubscriptionManager API 通过 android.telephony.cts.SubscriptionManagerTest 进行测试,这可确保数据套餐详情可以由运营商应用配置,并且更改在操作系统内传播。