diff options
author | Jeff Davidson <jpd@google.com> | 2019-05-30 13:40:59 -0700 |
---|---|---|
committer | Jeff Davidson <jpd@google.com> | 2019-05-30 20:56:48 +0000 |
commit | 449139f4080c1968be9c7e5d962f8f15a25bd0db (patch) | |
tree | baa302c3baa0f961ab04deb00c7e6e5d114a2245 | |
parent | 4387625574c26c8431d23d0f94018264046c866b (diff) | |
download | ContactsProvider-449139f4080c1968be9c7e5d962f8f15a25bd0db.tar.gz |
Allow carrier apps for non-default subs to access voicemail.
The previous implementation only permitted carrier apps on the default
subscription. However, even if a carrier's subscription is not
default, it may still legitimately need to access the voicemail
provider to insert new messages, since these subs can still be used
for voice calls and since voicemails can come in asynchronously.
Test: Build, TreeHugger
Fixes: 133265596
Change-Id: Ifc3e587d07fa926246456546c17742ad8fd6a34e
-rw-r--r-- | src/com/android/providers/contacts/VoicemailPermissions.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/com/android/providers/contacts/VoicemailPermissions.java b/src/com/android/providers/contacts/VoicemailPermissions.java index ed3815dc..7e409eaf 100644 --- a/src/com/android/providers/contacts/VoicemailPermissions.java +++ b/src/com/android/providers/contacts/VoicemailPermissions.java @@ -124,8 +124,7 @@ public class VoicemailPermissions { (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); String[] packages = mContext.getPackageManager().getPackagesForUid(Binder.getCallingUid()); for (String packageName : packages) { - if (tm.checkCarrierPrivilegesForPackageAnyPhone(packageName) - == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) { + if (packageHasCarrierPrivileges(tm, packageName)) { return true; } } @@ -136,6 +135,11 @@ public class VoicemailPermissions { private boolean packageHasCarrierPrivileges(String packageName) { TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); - return tm.getPackagesWithCarrierPrivileges().contains(packageName); + return packageHasCarrierPrivileges(tm, packageName); + } + + private static boolean packageHasCarrierPrivileges(TelephonyManager tm, String packageName) { + return tm.checkCarrierPrivilegesForPackageAnyPhone(packageName) + == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; } } |