@@ -362,10 +362,10 @@ public void addOnSubscriptionsChangedListener(String callingPackage,
362362 }
363363
364364 try {
365- mContext .enforceCallingPermission (
365+ mContext .enforceCallingOrSelfPermission (
366366 android .Manifest .permission .READ_PRIVILEGED_PHONE_STATE ,
367367 "addOnSubscriptionsChangedListener" );
368- // SKIP checking for run-time permission since obtained PRIVILEGED
368+ // SKIP checking for run-time permission since caller or self has PRIVILEGED permission
369369 } catch (SecurityException e ) {
370370 mContext .enforceCallingOrSelfPermission (
371371 android .Manifest .permission .READ_PHONE_STATE ,
@@ -481,9 +481,10 @@ private void listen(String callingPackage, IPhoneStateListener callback, int eve
481481
482482 if ((events & ENFORCE_PHONE_STATE_PERMISSION_MASK ) != 0 ) {
483483 try {
484- mContext .enforceCallingPermission (
484+ mContext .enforceCallingOrSelfPermission (
485485 android .Manifest .permission .READ_PRIVILEGED_PHONE_STATE , null );
486- // SKIP checking for run-time permission since obtained PRIVILEGED
486+ // SKIP checking for run-time permission since caller or self has PRIVILEGED
487+ // permission
487488 } catch (SecurityException e ) {
488489 if (mAppOps .noteOp (AppOpsManager .OP_READ_PHONE_STATE , Binder .getCallingUid (),
489490 callingPackage ) != AppOpsManager .MODE_ALLOWED ) {
@@ -661,10 +662,10 @@ private void listen(String callingPackage, IPhoneStateListener callback, int eve
661662 }
662663
663664 private boolean canReadPhoneState (String callingPackage ) {
664- if (mContext .checkCallingPermission (
665+ if (mContext .checkCallingOrSelfPermission (
665666 android .Manifest .permission .READ_PRIVILEGED_PHONE_STATE ) ==
666667 PackageManager .PERMISSION_GRANTED ) {
667- // SKIP checking for run-time permission since obtained PRIVILEGED
668+ // SKIP checking for run-time permission since caller or self has PRIVILEGED permission
668669 return true ;
669670 }
670671 boolean canReadPhoneState = mContext .checkCallingOrSelfPermission (
@@ -1589,9 +1590,10 @@ private void checkListenerPermission(int events) {
15891590
15901591 if ((events & ENFORCE_PHONE_STATE_PERMISSION_MASK ) != 0 ) {
15911592 try {
1592- mContext .enforceCallingPermission (
1593+ mContext .enforceCallingOrSelfPermission (
15931594 android .Manifest .permission .READ_PRIVILEGED_PHONE_STATE , null );
1594- // SKIP checking for run-time permission since obtained PRIVILEGED
1595+ // SKIP checking for run-time permission since caller or self has PRIVILEGED
1596+ // permission
15951597 } catch (SecurityException e ) {
15961598 mContext .enforceCallingOrSelfPermission (
15971599 android .Manifest .permission .READ_PHONE_STATE , null );
0 commit comments