Merge "Use PhoneGlobals to get carrier config." into mnc-dev
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index e8b6e05..ea44511 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -2651,8 +2651,20 @@
     }
 
     private boolean canReadPhoneState(String callingPackage, String message) {
-        mApp.enforceCallingOrSelfPermission(
-                android.Manifest.permission.READ_PHONE_STATE, message);
+        boolean failReadPhoneState = false;
+        try {
+            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_STATE,
+                    message);
+        } catch (SecurityException e) {
+            failReadPhoneState = true;
+        }
+        if (failReadPhoneState) {
+            mApp.enforceCallingOrSelfPermission(
+                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, message);
+
+            // SKIP checking for run-time permission since obtained PRIVILEDGED
+            return true;
+        }
 
         if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(),
                 callingPackage) != AppOpsManager.MODE_ALLOWED) {