OSDN Git Service

Adding "wifi only" option for wifi calling.
authorTyler Gunn <tgunn@google.com>
Fri, 1 Apr 2016 15:41:18 +0000 (08:41 -0700)
committerTyler Gunn <tgunn@google.com>
Fri, 1 Apr 2016 15:41:18 +0000 (08:41 -0700)
- Added "wifi-only" option to the list of wifi calling modes.
- Added code in settings initialization to check whether the carrier
supports including the wifi-only option.  If it does not, changes the
entries/values to a ser which does not include the wifi-only option.

Bug: 27858149
Change-Id: Ib02a97afcf6f2722c28b7a4d9c241774944c52d0

res/values/strings.xml
src/com/android/settings/WifiCallingSettings.java

index 9f57d15..58f0d40 100644 (file)
     <string-array name="wifi_calling_mode_choices">
         <item>Wi-Fi preferred</item>
         <item>Cellular preferred</item>
+        <item>Wi-Fi only</item>
     </string-array>
     <string-array name="wifi_calling_mode_values">
         <item>"2"</item>
         <item>"1"</item>
+        <item>"0"</item>
+    </string-array>
+    <string-array name="wifi_calling_mode_choices_without_wifi_only">
+        <item>Wi-Fi preferred</item>
+        <item>Cellular preferred</item>
+    </string-array>
+    <string-array name="wifi_calling_mode_values_without_wifi_only">
+        <item>"2"</item>
+        <item>"1"</item>
     </string-array>
     <!-- Wi-Fi Calling settings. Text displayed when Wi-Fi Calling is off -->
     <string name="wifi_calling_off_explanation">When Wi-Fi calling is on, your phone can route calls via Wi-Fi networks or your carrier\u2019s network, depending on your preference and which signal is stronger. Before turning on this feature, check with your carrier regarding fees and other details.</string>
index da83cad..3602295 100644 (file)
@@ -168,12 +168,20 @@ public class WifiCallingSettings extends SettingsPreferenceFragment
 
         CarrierConfigManager configManager = (CarrierConfigManager)
                 getSystemService(Context.CARRIER_CONFIG_SERVICE);
+        boolean isWifiOnlySupported = true;
         if (configManager != null) {
             PersistableBundle b = configManager.getConfig();
             if (b != null) {
                 mEditableWfcMode = b.getBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
+                isWifiOnlySupported = b.getBoolean(
+                        CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, true);
             }
         }
+
+        if (!isWifiOnlySupported) {
+            mButtonWfcMode.setEntries(R.array.wifi_calling_mode_choices_without_wifi_only);
+            mButtonWfcMode.setEntryValues(R.array.wifi_calling_mode_values_without_wifi_only);
+        }
     }
 
     @Override