Make sure policy transparency is applied in all cases

There are some cases where policy transparency is not
correctly showing up (e.g. on the main setting screen
for the primary provider). This makes sure policy
transparency is fully applied to the end user.

Test: manual on device
Bug: 333597574
Change-Id: I8d6a4c60e40bd2e639127777efdb04f1035c24bc
This commit is contained in:
Becca Hughes
2024-04-10 13:38:54 -07:00
parent 1f00d38d2d
commit 2fc40e8be7
2 changed files with 45 additions and 18 deletions

View File

@@ -92,12 +92,14 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
@Override
public void updateState(@NonNull Preference preference) {
final CombinedProviderInfo topProvider = getTopProvider();
final int userId = getUser();
if (topProvider != null && mContext != null) {
updatePreferenceForProvider(
preference,
topProvider.getAppName(mContext),
topProvider.getSettingsSubtitle(),
topProvider.getAppIcon(mContext, getUser()),
topProvider.getAppIcon(mContext, userId),
topProvider.getPackageName(),
topProvider.getSettingsActivity());
} else {
@@ -149,7 +151,17 @@ public class DefaultCombinedPreferenceController extends DefaultAppPreferenceCon
}
private @Nullable CombinedProviderInfo getTopProvider() {
return CombinedProviderInfo.getTopProvider(getAllProviders(getUser()));
final int userId = getUser();
final @Nullable CombinedProviderInfo topProvider =
CombinedProviderInfo.getTopProvider(getAllProviders(userId));
// Apply device admin restrictions to top provider.
if (topProvider != null
&& topProvider.getDeviceAdminRestrictions(mContext, userId) != null) {
return null;
}
return topProvider;
}
@Override