Merge "Add ims registration status" into stage-aosp-master
am: af845720f6
Change-Id: I5daf6e9a55e10d20fc03be6a54801ad6d6533bf8
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a1f4711..b207009 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8981,4 +8981,11 @@
<!-- The divider symbol between different parts of the notification header including spaces. not translatable [CHAR LIMIT=3] -->
<string name="notification_header_divider_symbol_with_spaces" translatable="false">" • "</string>
+
+ <!--Label of IMS registration header -->
+ <string name="ims_reg_title">"IMS registration state"</string>
+ <!--Used when IMS registration state is registered -->
+ <string name="ims_reg_status_registered">"Registered"</string>
+ <!--Used when IMS registration state is not registered -->
+ <string name="ims_reg_status_not_registered">"Not registered"</string>
</resources>
diff --git a/res/xml/device_info_status.xml b/res/xml/device_info_status.xml
index 9a57af9..6fe43ec 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" />
+ <Preference
+ android:key="ims_reg_state"
+ android:enabled="false"
+ android:shouldDisableView="false"
+ android:title="@string/ims_reg_title"
+ android:persistent="false" />
</PreferenceScreen>
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index baddc6c..faa4134 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -28,11 +28,15 @@
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 @@
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 @@
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 @@
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 @@
}
}
+ 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() {