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
diff --git a/src/com/android/providers/contacts/VoicemailPermissions.java b/src/com/android/providers/contacts/VoicemailPermissions.java
index ed3815d..7e409ea 100644
--- a/src/com/android/providers/contacts/VoicemailPermissions.java
+++ b/src/com/android/providers/contacts/VoicemailPermissions.java
@@ -124,8 +124,7 @@
                 (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 @@
     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;
     }
 }