diff options
| -rw-r--r-- | core/api/module-lib-current.txt | 1 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 19 | ||||
| -rw-r--r-- | tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java | 10 |
3 files changed, 21 insertions, 9 deletions
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt index 8447a7feb54e..287e7874be41 100644 --- a/core/api/module-lib-current.txt +++ b/core/api/module-lib-current.txt @@ -604,6 +604,7 @@ package android.telephony { public class TelephonyManager { method @NonNull public static int[] getAllNetworkTypes(); + method @FlaggedApi("android.os.mainline_vcn_platform_api") @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Set<java.lang.String> getPackagesWithCarrierPrivileges(); } } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 92effe05882a..ff302f6b1a65 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10613,20 +10613,31 @@ public class TelephonyManager { return null; } - /** @hide */ + /** + * Get the names of packages with carrier privileges for the current subscription. + * + * @throws UnsupportedOperationException If the device does not have {@link + * PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION} + * @hide + */ + @FlaggedApi(android.os.Flags.FLAG_MAINLINE_VCN_PLATFORM_API) + @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) - public List<String> getPackagesWithCarrierPrivileges() { + @RequiresFeature(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION) + @NonNull + public Set<String> getPackagesWithCarrierPrivileges() { + final Set<String> result = new HashSet<>(); try { ITelephony telephony = getITelephony(); if (telephony != null) { - return telephony.getPackagesWithCarrierPrivileges(getPhoneId()); + result.addAll(telephony.getPackagesWithCarrierPrivileges(getPhoneId())); } } catch (RemoteException ex) { Rlog.e(TAG, "getPackagesWithCarrierPrivileges RemoteException", ex); } catch (NullPointerException ex) { Rlog.e(TAG, "getPackagesWithCarrierPrivileges NPE", ex); } - return Collections.EMPTY_LIST; + return result; } /** diff --git a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java index b5cc5536532c..f1f74bca2ef9 100644 --- a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java +++ b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java @@ -206,7 +206,7 @@ public class TelephonySubscriptionTrackerTest { .getAllSubscriptionInfoList(); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt()); - setPrivilegedPackagesForMock(Collections.singletonList(PACKAGE_NAME)); + setPrivilegedPackagesForMock(Collections.singleton(PACKAGE_NAME)); } private IntentFilter getIntentFilter() { @@ -293,7 +293,7 @@ public class TelephonySubscriptionTrackerTest { Collections.singletonMap(TEST_SUBSCRIPTION_ID_1, TEST_CARRIER_CONFIG_WRAPPER)); } - private void setPrivilegedPackagesForMock(@NonNull List<String> privilegedPackages) { + private void setPrivilegedPackagesForMock(@NonNull Set<String> privilegedPackages) { doReturn(privilegedPackages).when(mTelephonyManager).getPackagesWithCarrierPrivileges(); } @@ -390,7 +390,7 @@ public class TelephonySubscriptionTrackerTest { @Test public void testOnSubscriptionsChangedFired_onActiveSubIdsChanged() throws Exception { setupReadySubIds(); - setPrivilegedPackagesForMock(Collections.emptyList()); + setPrivilegedPackagesForMock(Collections.emptySet()); doReturn(TEST_SUBSCRIPTION_ID_2).when(mDeps).getActiveDataSubscriptionId(); final ActiveDataSubscriptionIdListener listener = getActiveDataSubscriptionIdListener(); @@ -411,7 +411,7 @@ public class TelephonySubscriptionTrackerTest { public void testOnSubscriptionsChangedFired_WithReadySubidsNoPrivilegedPackages() throws Exception { setupReadySubIds(); - setPrivilegedPackagesForMock(Collections.emptyList()); + setPrivilegedPackagesForMock(Collections.emptySet()); final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener(); listener.onSubscriptionsChanged(); @@ -567,7 +567,7 @@ public class TelephonySubscriptionTrackerTest { verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES))); // Simulate a loss of carrier privileges - setPrivilegedPackagesForMock(Collections.emptyList()); + setPrivilegedPackagesForMock(Collections.emptySet()); listener.onSubscriptionsChanged(); mTestLooper.dispatchAll(); |