3 * Copyright (C) 2014 The Android Open Source Project
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package com.android.launcher3.compat;
20 import android.annotation.TargetApi;
21 import android.content.Context;
22 import android.content.SharedPreferences;
23 import android.content.pm.PackageManager;
24 import android.graphics.drawable.Drawable;
25 import android.os.Build;
26 import android.os.UserHandle;
28 import com.android.launcher3.LauncherAppState;
29 import com.android.launcher3.util.LongArrayMap;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
35 @TargetApi(Build.VERSION_CODES.LOLLIPOP)
36 public class UserManagerCompatVL extends UserManagerCompatV17 {
37 private static final String USER_CREATION_TIME_KEY = "user_creation_time_";
39 private final PackageManager mPm;
40 private final Context mContext;
42 UserManagerCompatVL(Context context) {
44 mPm = context.getPackageManager();
49 public void enableAndResetCache() {
51 mUsers = new LongArrayMap<UserHandleCompat>();
52 List<UserHandle> users = mUserManager.getUserProfiles();
54 for (UserHandle user : users) {
55 mUsers.put(mUserManager.getSerialNumberForUser(user),
56 UserHandleCompat.fromUser(user));
63 public List<UserHandleCompat> getUserProfiles() {
66 List<UserHandleCompat> users = new ArrayList<>();
67 for (UserHandleCompat user : mUsers) {
74 List<UserHandle> users = mUserManager.getUserProfiles();
76 return Collections.emptyList();
78 ArrayList<UserHandleCompat> compatUsers = new ArrayList<UserHandleCompat>(
80 for (UserHandle user : users) {
81 compatUsers.add(UserHandleCompat.fromUser(user));
87 public Drawable getBadgedDrawableForUser(Drawable unbadged, UserHandleCompat user) {
88 return mPm.getUserBadgedIcon(unbadged, user.getUser());
92 public CharSequence getBadgedLabelForUser(CharSequence label, UserHandleCompat user) {
96 return mPm.getUserBadgedLabel(label, user.getUser());
100 public long getUserCreationTime(UserHandleCompat user) {
101 // TODO: Use system API once available.
102 SharedPreferences prefs = mContext.getSharedPreferences(
103 LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE);
104 String key = USER_CREATION_TIME_KEY + getSerialNumberForUser(user);
105 if (!prefs.contains(key)) {
106 prefs.edit().putLong(key, System.currentTimeMillis()).apply();
108 return prefs.getLong(key, 0);