diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index d6216c5..d9680cf 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -1799,13 +1799,19 @@
     }
 
     /**
-     * Returns the data network type
+     * Returns the data network type.
+     * Legacy call, permission-free.
      *
      * @Deprecated to be removed Q3 2013 use {@link #getDataNetworkType}.
      */
     @Override
-    public int getNetworkType(String callingPackage) {
-        return getNetworkTypeForSubscriber(getDefaultSubscription(), callingPackage);
+    public int getNetworkType() {
+        final Phone phone = getPhone(getDefaultSubscription());
+        if (phone != null) {
+            return phone.getServiceState().getDataNetworkType();
+        } else {
+            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+        }
     }
 
     /**
@@ -1816,6 +1822,7 @@
         if (!canReadPhoneState(callingPackage, "getNetworkTypeForSubscriber")) {
             return TelephonyManager.NETWORK_TYPE_UNKNOWN;
         }
+
         final Phone phone = getPhone(subId);
         if (phone != null) {
             return phone.getServiceState().getDataNetworkType();
@@ -1850,18 +1857,14 @@
     }
 
     /**
-     * Returns the data network type
-     */
-    @Override
-    public int getVoiceNetworkType() {
-        return getVoiceNetworkTypeForSubscriber(getDefaultSubscription());
-    }
-
-    /**
      * Returns the Voice network type for a subId
      */
     @Override
-    public int getVoiceNetworkTypeForSubscriber(int subId) {
+    public int getVoiceNetworkTypeForSubscriber(int subId, String callingPackage) {
+        if (!canReadPhoneState(callingPackage, "getDataNetworkTypeForSubscriber")) {
+            return TelephonyManager.NETWORK_TYPE_UNKNOWN;
+        }
+
         final Phone phone = getPhone(subId);
         if (phone != null) {
             return phone.getServiceState().getVoiceNetworkType();
