From: debesay guadad Date: Fri, 26 Feb 2016 06:49:27 +0000 (+0800) Subject: Add ims registration status X-Git-Tag: android-x86-9.0-r1~89^2^2~3^2~69^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=96dc3229018e185111dab6dd5c14a14958f7b539;p=android-x86%2Fpackages-apps-Settings.git Add ims registration status Display "IMS registration state" in Status menu. Introduce carrier config to enable/disable the feature for customization. Since some carriers require, this feature is necessary. Test: manual Checked "IMS registration state" in Status menu Bug: 28806101 Merged-In: I6c452c512f03cf41704b91331e44141ed3050cf9 Change-Id: I6c452c512f03cf41704b91331e44141ed3050cf9 --- diff --git a/res/values/strings.xml b/res/values/strings.xml index a1f4711595..b207009851 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8981,4 +8981,11 @@ " • " + + + "IMS registration state" + + "Registered" + + "Not registered" diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml index 9a57af987b..6fe43ec87b 100644 --- a/res/xml/device_info_status.xml +++ b/res/xml/device_info_status.xml @@ -89,4 +89,10 @@ android:title="@string/status_wimax_mac_address" android:summary="@string/device_info_not_available" android:persistent="false" /> + diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java index baddc6cac2..faa4134a93 100644 --- a/src/com/android/settings/deviceinfo/Status.java +++ b/src/com/android/settings/deviceinfo/Status.java @@ -28,11 +28,15 @@ import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.PersistableBundle; import android.os.SystemClock; import android.os.SystemProperties; import android.os.UserManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; +import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; import android.text.TextUtils; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -56,6 +60,7 @@ public class Status extends SettingsPreferenceFragment { private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address"; private static final String KEY_SIM_STATUS = "sim_status"; private static final String KEY_IMEI_INFO = "imei_info"; + private static final String KEY_IMS_REGISTRATION_STATE = "ims_reg_state"; // Broadcasts to listen to for connectivity changes. private static final String[] CONNECTIVITY_INTENTS = { @@ -85,6 +90,8 @@ public class Status extends SettingsPreferenceFragment { private Preference mIpAddress; private Preference mWifiMacAddress; private Preference mWimaxMacAddress; + private Preference mImsStatus; + private Handler mHandler; private static class MyHandler extends Handler { @@ -162,6 +169,7 @@ public class Status extends SettingsPreferenceFragment { mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS); mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS); mIpAddress = findPreference(KEY_IP_ADDRESS); + mImsStatus = findPreference(KEY_IMS_REGISTRATION_STATE); mRes = getResources(); mUnavailable = mRes.getString(R.string.status_unavailable); @@ -269,11 +277,31 @@ public class Status extends SettingsPreferenceFragment { } } + private void setImsRegistrationStatus() { + CarrierConfigManager configManager = (CarrierConfigManager) + getSystemService(Context.CARRIER_CONFIG_SERVICE); + int subId = SubscriptionManager.getDefaultDataSubscriptionId(); + PersistableBundle config = null; + if (configManager != null) { + config = configManager.getConfigForSubId(subId); + } + if (config != null && config.getBoolean( + CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)) { + TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); + mImsStatus.setSummary((tm != null && tm.isImsRegistered(subId)) ? + R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered); + } else { + removePreferenceFromScreen(KEY_IMS_REGISTRATION_STATE); + mImsStatus = null; + } + } + void updateConnectivity() { setWimaxStatus(); setWifiStatus(); setBtStatus(); setIpAddressStatus(); + setImsRegistrationStatus(); } void updateTimes() {