diff --git a/src/com/android/settings/biometrics/activeunlock/ActiveUnlockStatusUtils.java b/src/com/android/settings/biometrics/activeunlock/ActiveUnlockStatusUtils.java index 2eee9df64f4..4ff2e900ae2 100644 --- a/src/com/android/settings/biometrics/activeunlock/ActiveUnlockStatusUtils.java +++ b/src/com/android/settings/biometrics/activeunlock/ActiveUnlockStatusUtils.java @@ -22,7 +22,6 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.ComponentInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.provider.DeviceConfig; @@ -38,8 +37,6 @@ import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController.AvailabilityStatus; -import java.util.List; - /** Utilities for active unlock details shared between Security Settings and Safety Center. */ public class ActiveUnlockStatusUtils { @@ -98,18 +95,14 @@ public class ActiveUnlockStatusUtils { Log.i(TAG, "authority not set"); return null; } - final List packageInfos = - mContext.getPackageManager().getInstalledPackages( - PackageManager.PackageInfoFlags.of(PackageManager.GET_PROVIDERS)); - for (PackageInfo packageInfo : packageInfos) { - final ProviderInfo[] providers = packageInfo.providers; - if (providers != null) { - for (ProviderInfo provider : providers) { - if (authority.equals(provider.authority) && isSystemApp(provider)) { - return authority; - } - } - } + final ProviderInfo provider = mContext.getPackageManager().resolveContentProvider( + authority, PackageManager.ComponentInfoFlags.of(PackageManager.MATCH_SYSTEM_ONLY)); + if (provider == null) { + Log.i(TAG, "could not find provider"); + return null; + } + if (authority.equals(provider.authority) && isSystemApp(provider)) { + return authority; } Log.e(TAG, "authority not valid"); return null; diff --git a/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockContentListenerTest.java b/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockContentListenerTest.java index 4da815131e0..8dd61998f04 100644 --- a/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockContentListenerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/activeunlock/ActiveUnlockContentListenerTest.java @@ -19,6 +19,7 @@ package com.android.settings.biometrics.activeunlock; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import static org.robolectric.shadows.ShadowLooper.idleMainLooper; @@ -44,8 +45,6 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import java.util.ArrayList; - @RunWith(RobolectricTestRunner.class) @Config(shadows = {ShadowDeviceConfig.class}) public class ActiveUnlockContentListenerTest { @@ -141,8 +140,7 @@ public class ActiveUnlockContentListenerTest { @Test public void noProvider_subscribeDoesntRegisterObserver() { - when(mPackageManager.getInstalledPackages(any())) - .thenReturn(new ArrayList<>()); + when(mPackageManager.resolveContentProvider(anyString(), any())).thenReturn(null); OnContentChangedListener listener = new OnContentChangedListener() { @Override public void onContentChanged(String newValue) {} diff --git a/tests/robotests/src/com/android/settings/testutils/ActiveUnlockTestUtils.java b/tests/robotests/src/com/android/settings/testutils/ActiveUnlockTestUtils.java index 06ca05c46c3..e932280048b 100644 --- a/tests/robotests/src/com/android/settings/testutils/ActiveUnlockTestUtils.java +++ b/tests/robotests/src/com/android/settings/testutils/ActiveUnlockTestUtils.java @@ -18,12 +18,12 @@ package com.android.settings.testutils; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; @@ -32,8 +32,6 @@ import android.provider.Settings; import com.android.settings.biometrics.activeunlock.ActiveUnlockStatusUtils; -import java.util.ArrayList; - /** Utilities class to enable or disable the Active Unlock flag in tests. */ public final class ActiveUnlockTestUtils { @@ -61,15 +59,10 @@ public final class ActiveUnlockTestUtils { resolveInfo.activityInfo.applicationInfo = applicationInfo; when(packageManager.resolveActivity(any(), anyInt())).thenReturn(resolveInfo); - PackageInfo packageInfo = new PackageInfo(); - packageInfo.applicationInfo = applicationInfo; ProviderInfo providerInfo = new ProviderInfo(); providerInfo.authority = PROVIDER; providerInfo.applicationInfo = applicationInfo; - packageInfo.providers = new ProviderInfo[] { providerInfo }; - ArrayList packageInfos = new ArrayList<>(); - packageInfos.add(packageInfo); - when(packageManager.getInstalledPackages(any())).thenReturn(packageInfos); + when(packageManager.resolveContentProvider(anyString(), any())).thenReturn(providerInfo); DeviceConfig.setProperty( DeviceConfig.NAMESPACE_REMOTE_AUTH, diff --git a/tests/unit/src/com/android/settings/testutils/ActiveUnlockTestUtils.java b/tests/unit/src/com/android/settings/testutils/ActiveUnlockTestUtils.java index 06ca05c46c3..e932280048b 100644 --- a/tests/unit/src/com/android/settings/testutils/ActiveUnlockTestUtils.java +++ b/tests/unit/src/com/android/settings/testutils/ActiveUnlockTestUtils.java @@ -18,12 +18,12 @@ package com.android.settings.testutils; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.when; import android.content.Context; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; @@ -32,8 +32,6 @@ import android.provider.Settings; import com.android.settings.biometrics.activeunlock.ActiveUnlockStatusUtils; -import java.util.ArrayList; - /** Utilities class to enable or disable the Active Unlock flag in tests. */ public final class ActiveUnlockTestUtils { @@ -61,15 +59,10 @@ public final class ActiveUnlockTestUtils { resolveInfo.activityInfo.applicationInfo = applicationInfo; when(packageManager.resolveActivity(any(), anyInt())).thenReturn(resolveInfo); - PackageInfo packageInfo = new PackageInfo(); - packageInfo.applicationInfo = applicationInfo; ProviderInfo providerInfo = new ProviderInfo(); providerInfo.authority = PROVIDER; providerInfo.applicationInfo = applicationInfo; - packageInfo.providers = new ProviderInfo[] { providerInfo }; - ArrayList packageInfos = new ArrayList<>(); - packageInfos.add(packageInfo); - when(packageManager.getInstalledPackages(any())).thenReturn(packageInfos); + when(packageManager.resolveContentProvider(anyString(), any())).thenReturn(providerInfo); DeviceConfig.setProperty( DeviceConfig.NAMESPACE_REMOTE_AUTH,