Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d6bddbc4 authored by debesay guadad's avatar debesay guadad Committed by Brad Ebinger
Browse files

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
parent 54eeafa0
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -8687,4 +8687,10 @@
    <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>
+6 −0
Original line number Diff line number Diff line
@@ -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>
+28 −0
Original line number Diff line number Diff line
@@ -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() {