為失衡用戶自訂設備行為

沒有數據平衡的 Android 設備允許網路流量通過,要求營運商和電信公司實施緩解協議。 Android 實現了一種通用解決方案,允許營運商和電信公司在設備失去平衡時進行指示。

Android 平台提供了一個預設運營商應用程序,該應用程式具有基於強制門戶檢測訊號的流量緩解的預設行為。它還為營運商和 OEM 提供了以低成本和極大靈活性客製化行為的機會。

範例和來源

預設電信商應用程式位於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 Verifier 或 GTS 測試。

使用這些手動驗證測試來驗證該功能:

  1. 驗證電信公司的設備不平衡訊號通知。
  2. 驗證失衡狀態和 Wi-Fi 關閉期間的流量重定向限制。
  3. 驗證網路流量已關閉並且通知 UI 在不平衡狀態下出現。
  4. 在失衡狀態下驗證語音通話/VoLTE 功能。
  5. 驗證視訊通話在失衡狀態下被阻止。
  6. 在 Wi-Fi 開啟的情況下,請驗證使用者是否可以繼續網頁瀏覽,且瀏覽流量在不平衡狀態下不會開啟網路流量。
  7. 在不平衡狀態下驗證 Wi-Fi、WFC 和藍牙功能。
  8. 關閉 Wi-Fi。驗證失衡通知 UI,且普通瀏覽流量不會重新導向到電信公司註冊網站。驗證點擊通知 UI 中的連結會將瀏覽器帶到電信公司註冊網站。
  9. 驗證切換飛行模式不會重置流量限制狀態。
  10. 驗證更換正在使用的 SIM 卡是否會重設網路流量狀態。
  11. 驗證重新插入不平衡的 SIM 是否會重新啟動流量重定向並再次獲得網路流量限制。
  12. 驗證重新啟動手機是否會重新啟動重定向並恢復流量限制和通知 UI。
  13. 點選“captiveportal”通知。驗證是否建立了受限網路連線以允許使用者添加積分。
  14. 驗證 SIM 卡餘額充值或重新啟動是否會導致蜂窩網路流量恢復,並且電信鏈路和無餘額通知消失。
  15. 資料服務恢復後的健全性測試。

預設應用程式提供了一些單元測試範例和執行它們的腳本(請參閱tests/runtest.sh )。當您實作自訂版本或行為時,您應該將這些自訂鏡像到專用的單元測試中。