針對未達平衡的使用者自訂裝置行為

如果 Android 裝置沒有數據餘額,仍可透過網路傳輸資料,因此電信業者必須實作減輕影響的通訊協定。Android 實作通用解決方案,讓電信業者指出裝置何時餘額不足。

Android 平台提供預設電信業者應用程式,可根據網頁認證入口偵測信號,採取預設的流量減緩措施。此外,電信業者和原始設備製造商也能以低成本和高彈性自訂行為。

範例和來源

預設的電信業者應用程式位於 platform/frameworks/base/packages/CarrierDefaultApp/.

實作

預設電信業者應用程式已設定完成,可為未設定的電信業者提供更優質的體驗。電信業者可以使用這項預設行為。 他們也可以在電信業者設定 XML 檔案中新增訊號動作對應,覆寫預設行為。他們可以決定不使用預設應用程式,而是透過自己的獨立電信業者應用程式使用 UICC 權限。

導入簡介

訊號

Android 架構支援將動作設定為下列參數化信號:

  • TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
  • TelephonyIntents.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;

注意:如果電信業者自行實作獨立應用程式,則可支援本節未提及的信號。他們也可以自行定義及設定動作。

預設訊號動作對應

如要設定預設動作,請按照下列步驟操作:

  1. 為支援的信號定義鍵。

    預設的信號對應動作定義於 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";
  2. 將預設動作與信號鍵建立關聯。

    預設動作 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 測試。

請使用下列手動驗證測試來驗證這項功能:

  1. 驗證電信公司的裝置餘額不足通知。
  2. 確認在不平衡狀態和 Wi-Fi 關閉時,流量重新導向是否會受到節流。
  3. 確認餘額不足時,網路流量會降低,並顯示通知 UI。
  4. 在餘額不足時驗證語音通話/VoLTE 功能。
  5. 確認帳戶餘額不足時,視訊通話功能是否遭到封鎖。
  6. 開啟 Wi-Fi 後,確認使用者可以繼續瀏覽網頁,且瀏覽流量不會在餘額不足時開啟網路流量。
  7. 在不平衡狀態下驗證 Wi-Fi、Wi-Fi 通話和藍牙功能。
  8. 關閉 Wi-Fi。確認餘額不足通知使用者介面,以及一般瀏覽流量不會重新導向至電信公司註冊網站。確認點選通知使用者介面中的連結後,瀏覽器會連往電信業者註冊網站。
  9. 確認切換飛航模式不會重設流量節流狀態。
  10. 確認更換正在使用的 SIM 卡會重設網路流量狀態。
  11. 確認重新插入餘額不足的 SIM 卡後,流量重新導向功能會重新啟動,並再次取得網路流量節流設定。
  12. 確認重新啟動手機後,重新導向功能會恢復運作,且流量節流和通知 UI 會恢復正常。
  13. 輕觸「captiveportal」通知。確認已建立受限網路連線,允許使用者新增點數。
  14. 確認加值或重新啟用 SIM 卡後,行動網路流量是否恢復,且電信公司連結和餘額不足通知是否消失。
  15. 資料服務復原後進行健全性測試。

預設應用程式提供幾個單元測試範例,以及執行這些測試的指令碼 (請參閱 tests/runtest.sh)。實作自訂版本或行為時,您應將這些自訂項目反映到專屬單元測試中。