Fix title for work and private profiles

For some languages UserManager#getBadgedLabelForUser does not return
the correct string for the context.

Bug: 315082416
Test: manual
Change-Id: I376d1ad4eafd1ba5f3db2c32c9fddb81bbde2dd2
This commit is contained in:
Manish Singh
2023-12-24 13:25:39 +00:00
parent 06fa244255
commit dbb2337ce0

View File

@@ -17,6 +17,8 @@
package com.android.settings.dashboard.profileselector;
import static android.app.admin.DevicePolicyResources.Strings.Settings.PERSONAL_CATEGORY_HEADER;
import static android.app.admin.DevicePolicyResources.Strings.Settings.PRIVATE_CATEGORY_HEADER;
import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_CATEGORY_HEADER;
import android.app.ActivityManager;
import android.app.admin.DevicePolicyManager;
@@ -26,6 +28,7 @@ import android.content.pm.UserInfo;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -46,6 +49,7 @@ import java.util.Objects;
* Adapter for a spinner that shows a list of users.
*/
public class UserAdapter extends BaseAdapter {
private static final String TAG = "UserAdapter";
/** Holder for user details */
public static class UserDetails {
@@ -79,8 +83,17 @@ public class UserAdapter extends BaseAdapter {
return resources.getString(PERSONAL_CATEGORY_HEADER,
() -> context.getString(
com.android.settingslib.R.string.category_personal));
} else if (mUserManager.isManagedProfile(userId)) {
return resources.getString(WORK_CATEGORY_HEADER,
() -> context.getString(com.android.settingslib.R.string.category_work));
} else if (android.os.Flags.allowPrivateProfile()
&& mUserManager.getUserInfo(userId).isPrivateProfile()) {
return resources.getString(PRIVATE_CATEGORY_HEADER,
() -> context.getString(com.android.settingslib.R.string.category_private));
}
return (String) mUserManager.getBadgedLabelForUser(/* label= */ "", mUserHandle);
Log.w(TAG, "title requested for unexpected user id " + userId);
return resources.getString(PERSONAL_CATEGORY_HEADER,
() -> context.getString(com.android.settingslib.R.string.category_personal));
}
}