如果 Android 裝置沒有數據餘額,仍可透過網路傳輸資料,因此電信業者必須實作減輕影響的通訊協定。Android 實作通用解決方案,讓電信業者指出裝置何時餘額不足。
Android 平台提供預設電信業者應用程式,可根據網頁認證入口偵測信號,採取預設的流量減緩措施。此外,電信業者和原始設備製造商也能以低成本和高彈性自訂行為。
範例和來源
預設的電信業者應用程式位於 platform/frameworks/base/packages/CarrierDefaultApp/.
實作
預設電信業者應用程式已設定完成,可為未設定的電信業者提供更優質的體驗。電信業者可以使用這項預設行為。 他們也可以在電信業者設定 XML 檔案中新增訊號動作對應,覆寫預設行為。他們可以決定不使用預設應用程式,而是透過自己的獨立電信業者應用程式使用 UICC 權限。
導入簡介
訊號
Android 架構支援將動作設定為下列參數化信號:
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTEDTelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
這些信號位於 frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java。
支援的動作
預設電信業者應用程式會定義一組支援的動作,這些動作可對應至支援的信號。相關定義位於 CarrierActionUtils.java 中:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0;
public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1;
public static final int CARRIER_ACTION_DISABLE_RADIO = 2;
public static final int CARRIER_ACTION_ENABLE_RADIO = 3;
public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4;
public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5;
public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;注意:如果電信業者自行實作獨立應用程式,則可支援本節未提及的信號。他們也可以自行定義及設定動作。
預設訊號動作對應
如要設定預設動作,請按照下列步驟操作:
- 為支援的信號定義鍵。
預設的信號對應動作定義於
CarrierConfigManager.java。 每個支援的信號都有一個鍵:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- 將預設動作與信號鍵建立關聯。
預設動作 ID 會與信號鍵建立關聯:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });電話架構會將這些動作對應至相應的信號。
覆寫預設動作
您可以將動作 ID 與訊號鍵 (定義於 CarrierConfigManager.java) 建立關聯,在電信業者設定 XML 檔案中為支援的訊號定義自訂動作。舉例來說,下列對應會停用計量付費 APN,並在重新導向時顯示入口網站通知:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2">
<item value="1" />
<item value="4" />
</string-array>電話通訊架構會載入這些設定,並覆寫預設動作。
驗證
這項功能沒有 CTS、CTS 驗證器或 GTS 測試。
請使用下列手動驗證測試來驗證這項功能:
- 驗證電信公司的裝置餘額不足通知。
- 確認在不平衡狀態和 Wi-Fi 關閉時,流量重新導向是否會受到節流。
- 確認餘額不足時,網路流量會降低,並顯示通知 UI。
- 在餘額不足時驗證語音通話/VoLTE 功能。
- 確認帳戶餘額不足時,視訊通話功能是否遭到封鎖。
- 開啟 Wi-Fi 後,確認使用者可以繼續瀏覽網頁,且瀏覽流量不會在餘額不足時開啟網路流量。
- 在不平衡狀態下驗證 Wi-Fi、Wi-Fi 通話和藍牙功能。
- 關閉 Wi-Fi。確認餘額不足通知使用者介面,以及一般瀏覽流量不會重新導向至電信公司註冊網站。確認點選通知使用者介面中的連結後,瀏覽器會連往電信業者註冊網站。
- 確認切換飛航模式不會重設流量節流狀態。
- 確認更換正在使用的 SIM 卡會重設網路流量狀態。
- 確認重新插入餘額不足的 SIM 卡後,流量重新導向功能會重新啟動,並再次取得網路流量節流設定。
- 確認重新啟動手機後,重新導向功能會恢復運作,且流量節流和通知 UI 會恢復正常。
- 輕觸「captiveportal」通知。確認已建立受限網路連線,允許使用者新增點數。
- 確認加值或重新啟用 SIM 卡後,行動網路流量是否恢復,且電信公司連結和餘額不足通知是否消失。
- 資料服務復原後進行健全性測試。
預設應用程式提供幾個單元測試範例,以及執行這些測試的指令碼 (請參閱 tests/runtest.sh)。實作自訂版本或行為時,您應將這些自訂項目反映到專屬單元測試中。