diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyConstants.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyConstants.java
index ecbec0d..1c83e27 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyConstants.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyConstants.java
@@ -228,6 +228,15 @@
     public static final String DATA_STATE_UNKNOWN = "UNKNOWN";
 
     /**
+     * Constant for Override Network Type
+     * **/
+    public static final String OVERRIDE_NETWORK_TYPE_NONE = "NONE";
+    public static final String OVERRIDE_NETWORK_TYPE_LTE_CA = "LTE_CA";
+    public static final String OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = "LTE_ADVANCED_PRO";
+    public static final String OVERRIDE_NETWORK_TYPE_NR_NSA = "NR_NSA";
+    public static final String OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = "NR_MMWAVE";
+
+    /**
      * Constant for Telephony Manager Call State
      * **/
     public static final String TELEPHONY_STATE_RINGING = "RINGING";
@@ -317,6 +326,17 @@
     public static final String NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = "NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA";
     public static final String NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = "NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA";
     public static final String NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = "NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA";
+    public static final String NETWORK_MODE_NR_LTE_GSM_WCDMA = "NETWORK_MODE_NR_LTE_GSM_WCDMA";
+    public static final String NETWORK_MODE_NR_ONLY = "NETWORK_MODE_NR_ONLY";
+    public static final String NETWORK_MODE_NR_LTE = "NETWORK_MODE_NR_LTE";
+    public static final String NETWORK_MODE_NR_LTE_CDMA_EVDO = "NETWORK_MODE_NR_LTE_CDMA_EVDO";
+    public static final String NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = "NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA";
+    public static final String NETWORK_MODE_NR_LTE_WCDMA = "NETWORK_MODE_NR_LTE_WCDMA";
+    public static final String NETWORK_MODE_NR_LTE_TDSCDMA = "NETWORK_MODE_NR_LTE_TDSCDMA";
+    public static final String NETWORK_MODE_NR_LTE_TDSCDMA_GSM = "NETWORK_MODE_NR_LTE_TDSCDMA_GSM";
+    public static final String NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA = "NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA";
+    public static final String NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = "NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA";
+    public static final String NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = "NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA";
     public static final String NETWORK_MODE_INVALID = "INVALID";
 
     /**
@@ -373,6 +393,7 @@
     public static final String EventPreciseStateChanged = "PreciseStateChanged";
     public static final String EventDataConnectionRealTimeInfoChanged = "DataConnectionRealTimeInfoChanged";
     public static final String EventDataConnectionStateChanged = "DataConnectionStateChanged";
+    public static final String EventDisplayInfoChanged = "DisplayInfoChanged";
     public static final String EventActiveDataSubIdChanged = "ActiveDataSubIdChanged";
     public static final String EventServiceStateChanged = "ServiceStateChanged";
     public static final String EventSignalStrengthChanged = "SignalStrengthChanged";
@@ -438,6 +459,13 @@
         public static final String DATA_CONNECTION_STATE = "dataConnectionState";
     }
 
+    public static class DisplayInfoContainer {
+        public static final String TIME = "time";
+        public static final String NETWORK = "network";
+        public static final String OVERRIDE = "override";
+        public static final String SUBSCRIPTION_ID = "subscriptionId";
+    }
+
     public static class ServiceStateContainer {
         public static final String VOICE_REG_STATE = "voiceRegState";
         public static final String VOICE_NETWORK_TYPE = "voiceNetworkType";
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyEvents.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyEvents.java
index 7021475..04f8041 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyEvents.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyEvents.java
@@ -20,6 +20,7 @@
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.PreciseCallState;
 import android.telephony.ServiceState;
+import android.telephony.TelephonyDisplayInfo;
 
 import com.googlecode.android_scripting.jsonrpc.JsonSerializable;
 
@@ -267,6 +268,52 @@
         }
     }
 
+    public static class DisplayInfoChangedEvent implements JsonSerializable {
+        private TelephonyDisplayInfo mDisplayInfoString;
+        private int mSubscriptionId;
+        private String mOverrideDataNetworkType;
+        private String mDataNetworkType;
+
+        DisplayInfoChangedEvent(TelephonyDisplayInfo DisplayInfoString, int subscriptionId) {
+            mDisplayInfoString = DisplayInfoString;
+            mSubscriptionId = subscriptionId;
+            mOverrideDataNetworkType = TelephonyUtils.getDisplayInfoString(
+                    DisplayInfoString.getOverrideNetworkType());
+            mDataNetworkType = TelephonyUtils.getNetworkTypeString(
+                    DisplayInfoString.getNetworkType());
+        }
+
+        public String getOverrideDataNetworkType() {
+            return mOverrideDataNetworkType;
+        }
+
+        public int getSubscriptionId() {
+            return mSubscriptionId;
+        }
+
+        public String getDataNetworkType() {
+            return mDataNetworkType;
+        }
+
+        public JSONObject toJSON() throws JSONException {
+            JSONObject displayInfoState = new JSONObject();
+
+            displayInfoState.put(
+                    TelephonyConstants.DisplayInfoContainer.OVERRIDE,
+                    mOverrideDataNetworkType);
+
+            displayInfoState.put(
+                    TelephonyConstants.DisplayInfoContainer.NETWORK,
+                    mDataNetworkType);
+
+            displayInfoState.put(
+                    TelephonyConstants.DisplayInfoContainer.SUBSCRIPTION_ID,
+                    mSubscriptionId);
+
+            return displayInfoState;
+        }
+    }
+
     public static class PhysicalChannelConfigChangedEvent implements JsonSerializable {
         private final List<PhysicalChannelConfig> mConfigs;
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
index a338402..a7988aa 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
@@ -55,6 +55,8 @@
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .DataConnectionStateChangeListener;
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
+                                                   .DisplayInfoStateChangeListener;
+import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .ServiceStateChangeListener;
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .SignalStrengthChangeListener;
@@ -303,6 +305,28 @@
         return true;
     }
 
+    @Rpc(description = "Starts tracking display info change" +
+                       "for default subscription ID.")
+    public Boolean telephonyStartTrackingDisplayInfoChange() {
+        return telephonyStartTrackingDisplayInfoChangeForSubscription(
+                              SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+    }
+
+    @Rpc(description = "Starts tracking display info change" +
+                       "for specified subscription ID.")
+    public Boolean telephonyStartTrackingDisplayInfoChangeForSubscription(
+                @RpcParameter(name = "subId") Integer subId) {
+        StateChangeListener listener = getStateChangeListenerForSubscription(subId, true);
+        if(listener == null) {
+            Log.e("Invalid subscription ID");
+            return false;
+        }
+        mTelephonyManager.createForSubscriptionId(subId).listen(
+            listener.mDisplayInfoStateChangeListener,
+            PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
+        return true;
+    }
+
     @Rpc(description = "Turn on/off precise listening on fore/background or" +
                        " ringing calls for default voice subscription ID.")
     public Boolean telephonyAdjustPreciseCallStateListenLevel(
@@ -381,6 +405,28 @@
         return true;
     }
 
+    @Rpc(description = "Stops tracking display info change " +
+                       "for default subscription ID.")
+    public Boolean telephonyStopTrackingDisplayInfoChange() {
+        return telephonyStopTrackingDisplayInfoChangeForSubscription(
+                SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+    }
+
+    @Rpc(description = "Stops tracking display info change " +
+                       "for specified subscription ID.")
+    public Boolean telephonyStopTrackingDisplayInfoChangeForSubscription(
+                   @RpcParameter(name = "subId") Integer subId) {
+        StateChangeListener listener = getStateChangeListenerForSubscription(subId, false);
+        if(listener == null) {
+            Log.e("Invalid subscription ID");
+            return false;
+        }
+        mTelephonyManager.createForSubscriptionId(subId).listen(
+            listener.mDisplayInfoStateChangeListener,
+            PhoneStateListener.LISTEN_NONE);
+        return true;
+    }
+
     @Rpc(description = "Stops tracking call state change " +
             "for default voice subscription ID.")
     public Boolean telephonyStopTrackingCallStateChange() {
@@ -1506,6 +1552,7 @@
         public CellInfoChangeListener mCellInfoChangeListener;
         public DataConnectionStateChangeListener mDataConnectionStateChangeListener;
         public ActiveDataSubIdChangeListener mActiveDataSubIdChangeListener;
+        public DisplayInfoStateChangeListener mDisplayInfoStateChangeListener;
         public DataConnectionRealTimeInfoChangeListener mDataConnectionRTInfoChangeListener;
         public VoiceMailStateChangeListener mVoiceMailStateChangeListener;
 
@@ -1520,6 +1567,9 @@
             mActiveDataSubIdChangeListener =
                 new ActiveDataSubIdChangeListener(
                         mEventFacade, mTelephonyManager, subId, mService.getMainLooper());
+            mDisplayInfoStateChangeListener =
+                new DisplayInfoStateChangeListener(
+                        mEventFacade, mTelephonyManager, subId, mService.getMainLooper());
             mCallStateChangeListener =
                 new CallStateChangeListener(mEventFacade, subId, mService.getMainLooper());
             mCellInfoChangeListener =
@@ -1545,6 +1595,9 @@
                     mActiveDataSubIdChangeListener,
                     PhoneStateListener.LISTEN_NONE);
             mTelephonyManager.listen(
+                    mDisplayInfoStateChangeListener,
+                    PhoneStateListener.LISTEN_NONE);
+            mTelephonyManager.listen(
                     mCellInfoChangeListener,
                     PhoneStateListener.LISTEN_NONE);
             mTelephonyManager.listen(
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyStateListeners.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyStateListeners.java
index e06af17..b13b66c 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyStateListeners.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyStateListeners.java
@@ -24,6 +24,7 @@
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
 import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyDisplayInfo;
 import android.telephony.TelephonyManager;
 
 import com.googlecode.android_scripting.facade.EventFacade;
@@ -217,6 +218,45 @@
         }
     }
 
+    public static class DisplayInfoStateChangeListener extends PhoneStateListener {
+
+        private final EventFacade mEventFacade;
+        private final TelephonyManager mTelephonyManager;
+        public static final int sListeningStates =
+                PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED;
+        public int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+
+        public DisplayInfoStateChangeListener(EventFacade ef, TelephonyManager tm) {
+            super();
+            mEventFacade = ef;
+            mTelephonyManager = tm;
+            subscriptionId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
+        }
+
+        public DisplayInfoStateChangeListener(EventFacade ef, TelephonyManager tm, int subId) {
+            super();
+            mEventFacade = ef;
+            mTelephonyManager = tm;
+            subscriptionId = subId;
+        }
+
+        public DisplayInfoStateChangeListener(
+                EventFacade ef, TelephonyManager tm, int subId, Looper looper) {
+            super(looper);
+            mEventFacade = ef;
+            mTelephonyManager = tm;
+            subscriptionId = subId;
+        }
+
+        @Override
+        public void onDisplayInfoChanged(TelephonyDisplayInfo mTelephonyDisplayInfo) {
+            mEventFacade.postEvent(
+                TelephonyConstants.EventDisplayInfoChanged,
+                    new TelephonyEvents.DisplayInfoChangedEvent(
+                        mTelephonyDisplayInfo, subscriptionId));
+        }
+    }
+
     public static class ServiceStateChangeListener extends PhoneStateListener {
 
         private final EventFacade mEventFacade;
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyUtils.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyUtils.java
index 3b0b436..c1556cc 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyUtils.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyUtils.java
@@ -18,10 +18,12 @@
 import com.android.ims.ImsConfig;
 import com.android.internal.telephony.RILConstants;
 import com.googlecode.android_scripting.Log;
+
 import android.telecom.TelecomManager;
 import android.telephony.DataConnectionRealTimeInfo;
 import android.telephony.PreciseCallState;
 import android.telephony.ServiceState;
+import android.telephony.TelephonyDisplayInfo;
 import android.telephony.TelephonyManager;
 import android.telephony.VoLteServiceState;
 
@@ -189,6 +191,23 @@
         return TelephonyConstants.DATA_STATE_UNKNOWN;
     }
 
+    public static String getDisplayInfoString(int state) {
+        switch (state) {
+            case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE:
+                return TelephonyConstants.OVERRIDE_NETWORK_TYPE_NONE;
+            case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA:
+                return TelephonyConstants.OVERRIDE_NETWORK_TYPE_LTE_CA;
+            case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO:
+                return TelephonyConstants.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO;
+            case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA:
+                return TelephonyConstants.OVERRIDE_NETWORK_TYPE_NR_NSA;
+            case TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE:
+                return TelephonyConstants.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE;
+        }
+        Log.d("getDisplayInfoStateString error. int: " + state);
+        return TelephonyConstants.OVERRIDE_NETWORK_TYPE_NONE;
+    }
+
     public static int getNetworkModeIntfromString(String networkMode) {
         switch (networkMode) {
             case TelephonyConstants.NETWORK_MODE_WCDMA_PREF:
@@ -237,6 +256,28 @@
                 return RILConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
             case TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                 return RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_ONLY:
+                return RILConstants.NETWORK_MODE_NR_ONLY;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE:
+                return RILConstants.NETWORK_MODE_NR_LTE;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+                return RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
+                return RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA;
+            case TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                return RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
         }
         Log.d("getNetworkModeIntfromString error. String: " + networkMode);
         return RILConstants.RIL_ERRNO_INVALID_RESPONSE;
@@ -290,6 +331,28 @@
                 return TelephonyConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
             case RILConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
                 return TelephonyConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_ONLY:
+                return TelephonyConstants.NETWORK_MODE_NR_ONLY;
+            case RILConstants.NETWORK_MODE_NR_LTE:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE;
+            case RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO;
+            case RILConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM;
+            case RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA;
+            case RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA;
         }
         Log.d("getNetworkModeStringfromInt error. Int: " + networkMode);
         return TelephonyConstants.NETWORK_MODE_INVALID;
