UserManagerCompatVL.java revision f9847b9bd3e5286fe10667ec12dab5b4c43355fa
1ed13187a745866483139e2878037e1f8427ce567Kenny Guy
2ed13187a745866483139e2878037e1f8427ce567Kenny Guy/*
3ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Copyright (C) 2014 The Android Open Source Project
4ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
5ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Licensed under the Apache License, Version 2.0 (the "License");
6ed13187a745866483139e2878037e1f8427ce567Kenny Guy * you may not use this file except in compliance with the License.
7ed13187a745866483139e2878037e1f8427ce567Kenny Guy * You may obtain a copy of the License at
8ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
9ed13187a745866483139e2878037e1f8427ce567Kenny Guy *      http://www.apache.org/licenses/LICENSE-2.0
10ed13187a745866483139e2878037e1f8427ce567Kenny Guy *
11ed13187a745866483139e2878037e1f8427ce567Kenny Guy * Unless required by applicable law or agreed to in writing, software
12ed13187a745866483139e2878037e1f8427ce567Kenny Guy * distributed under the License is distributed on an "AS IS" BASIS,
13ed13187a745866483139e2878037e1f8427ce567Kenny Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14ed13187a745866483139e2878037e1f8427ce567Kenny Guy * See the License for the specific language governing permissions and
15ed13187a745866483139e2878037e1f8427ce567Kenny Guy * limitations under the License.
16ed13187a745866483139e2878037e1f8427ce567Kenny Guy */
17ed13187a745866483139e2878037e1f8427ce567Kenny Guy
18ed13187a745866483139e2878037e1f8427ce567Kenny Guypackage com.android.launcher3.compat;
19ed13187a745866483139e2878037e1f8427ce567Kenny Guy
20ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.content.Context;
21f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokaniimport android.content.pm.PackageManager;
22ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.graphics.drawable.Drawable;
23ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.os.UserHandle;
24ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.os.UserManager;
25ed13187a745866483139e2878037e1f8427ce567Kenny Guy
26ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.ArrayList;
27c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guyimport java.util.Collections;
28ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.List;
29ed13187a745866483139e2878037e1f8427ce567Kenny Guy
30ed13187a745866483139e2878037e1f8427ce567Kenny Guypublic class UserManagerCompatVL extends UserManagerCompatV17 {
31f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani    private final PackageManager mPm;
32ed13187a745866483139e2878037e1f8427ce567Kenny Guy
33ed13187a745866483139e2878037e1f8427ce567Kenny Guy    UserManagerCompatVL(Context context) {
34ed13187a745866483139e2878037e1f8427ce567Kenny Guy        super(context);
35f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        mPm = context.getPackageManager();
36ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
37ed13187a745866483139e2878037e1f8427ce567Kenny Guy
386075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
39ed13187a745866483139e2878037e1f8427ce567Kenny Guy    public List<UserHandleCompat> getUserProfiles() {
40c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        List<UserHandle> users = mUserManager.getUserProfiles();
41c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        if (users == null) {
42c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            return Collections.EMPTY_LIST;
43ed13187a745866483139e2878037e1f8427ce567Kenny Guy        }
44c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        ArrayList<UserHandleCompat> compatUsers = new ArrayList<UserHandleCompat>(
45c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy                users.size());
46c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        for (UserHandle user : users) {
47c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            compatUsers.add(UserHandleCompat.fromUser(user));
48c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        }
49c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        return compatUsers;
50ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
51ed13187a745866483139e2878037e1f8427ce567Kenny Guy
526075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
53ed13187a745866483139e2878037e1f8427ce567Kenny Guy    public Drawable getBadgedDrawableForUser(Drawable unbadged, UserHandleCompat user) {
54f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        // STOPSHIP(mokani): Remove catch block once dogfood build is bigger than LRW70.
55f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        // This hack is just to prevent crash in older builds.
56f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        try {
57f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani            return mPm.getUserBadgedIcon(unbadged, user.getUser());
58f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        } catch (Exception e) {
59f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani            return unbadged;
60f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        }
61c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy    }
62c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy
636075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani    @Override
64d6fe52636dcaa96ec1e10ce2daebe98b820c9739Kenny Guy    public CharSequence getBadgedLabelForUser(CharSequence label, UserHandleCompat user) {
65c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy        if (user == null) {
66c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy            return label;
67ed13187a745866483139e2878037e1f8427ce567Kenny Guy        }
68f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        // STOPSHIP(mokani): Remove catch block once dogfood build is bigger than LRW70.
69f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        // This hack is just to prevent crash in older builds.
70f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        try {
71f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        return mPm.getUserBadgedLabel(label, user.getUser());
72f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        } catch (Exception e) {
73f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani            return label;
74f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani        }
75ed13187a745866483139e2878037e1f8427ce567Kenny Guy    }
76ed13187a745866483139e2878037e1f8427ce567Kenny Guy}
77ed13187a745866483139e2878037e1f8427ce567Kenny Guy
78