diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 6052bda..9d0a2d5 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -27,7 +27,6 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.PackageManager.NameNotFoundException;
-import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Bundle;
@@ -171,10 +170,8 @@
             return true;
         } else if (preference == mButtonDataEnabled) {
             if (DBG) log("onPreferenceTreeClick: preference == mButtonDataEnabled.");
-            ConnectivityManager cm =
-                    (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
 
-            cm.setMobileDataEnabled(mButtonDataEnabled.isChecked());
+            mPhone.setDataEnabled(mButtonDataEnabled.isChecked());
             return true;
         } else if (preference == mLteDataServicePref) {
             String tmpl = android.provider.Settings.Global.getString(getContentResolver(),
@@ -345,9 +342,7 @@
         // preferences.
         getPreferenceScreen().setEnabled(true);
 
-        ConnectivityManager cm =
-                (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
-        mButtonDataEnabled.setChecked(cm.getMobileDataEnabled());
+        mButtonDataEnabled.setChecked(mPhone.getDataEnabled());
 
         // Set UI state in onResume because a user could go home, launch some
         // app to change this setting's backend, and re-launch this settings app
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 3354687..e79ad3c 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -21,7 +21,6 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Binder;
@@ -867,9 +866,7 @@
 
     public boolean enableDataConnectivity() {
         enforceModifyPermission();
-        ConnectivityManager cm =
-                (ConnectivityManager)mApp.getSystemService(Context.CONNECTIVITY_SERVICE);
-        cm.setMobileDataEnabled(true);
+        mPhone.setDataEnabled(true);
         return true;
     }
 
@@ -885,9 +882,7 @@
 
     public boolean disableDataConnectivity() {
         enforceModifyPermission();
-        ConnectivityManager cm =
-                (ConnectivityManager)mApp.getSystemService(Context.CONNECTIVITY_SERVICE);
-        cm.setMobileDataEnabled(false);
+        mPhone.setDataEnabled(false);
         return true;
     }
 
@@ -1394,4 +1389,27 @@
         if (DBG) log("setPreferredNetworkType: " + (success ? "ok" : "fail"));
         return success;
     }
+
+    /**
+     * Set mobile data enabled
+     * Used by the user through settings etc to turn on/off mobile data
+     *
+     * @param enable {@code true} turn turn data on, else {@code false}
+     */
+    @Override
+    public void setDataEnabled(boolean enable) {
+        enforceModifyPermission();
+        mPhone.setDataEnabled(enable);
+    }
+
+    /**
+     * Get whether mobile data is enabled
+     *
+     * @return {@code true} if data is enabled else {@code false}
+     */
+    @Override
+    public boolean getDataEnabled() {
+        enforceModifyPermission();
+        return mPhone.getDataEnabled();
+    }
 }
