Change the order of permission checks for READ_PHONE_STATE.

This is needed for 2 reasons:
1. If called as self, OP_READ_PHONE_STATE check should not be done.
2. If caller does not have permission, exception should be thrown
for READ_PHONE_STATE.

Bug: 22128902
Change-Id: I8a8d6f75c4da9914a17c0ceb57bb5b8df1df0bb9
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index ea44511..359535e 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -2651,19 +2651,15 @@
     }
 
     private boolean canReadPhoneState(String callingPackage, String 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
+            // SKIP checking for run-time permission since self or obtained PRIVILEDGED
             return true;
+        } catch (SecurityException e) {
+            mApp.enforceCallingOrSelfPermission(android.Manifest.permission.READ_PHONE_STATE,
+                    message);
         }
 
         if (mAppOps.noteOp(AppOpsManager.OP_READ_PHONE_STATE, Binder.getCallingUid(),