UserManagerCompatVL.java revision 18bf8e2ffde3444d53aaa9654da02cdedd0b7cd1
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; 2118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyalimport android.content.SharedPreferences; 22f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokaniimport android.content.pm.PackageManager; 23ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.graphics.drawable.Drawable; 24ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport android.os.UserHandle; 2518bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal 2618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyalimport com.android.launcher3.LauncherAppState; 27ed13187a745866483139e2878037e1f8427ce567Kenny Guy 28ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.ArrayList; 29c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guyimport java.util.Collections; 30ed13187a745866483139e2878037e1f8427ce567Kenny Guyimport java.util.List; 31ed13187a745866483139e2878037e1f8427ce567Kenny Guy 32ed13187a745866483139e2878037e1f8427ce567Kenny Guypublic class UserManagerCompatVL extends UserManagerCompatV17 { 3318bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal private static final String USER_CREATION_TIME_KEY = "user_creation_time_"; 3418bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal 35f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani private final PackageManager mPm; 3618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal private final Context mContext; 37ed13187a745866483139e2878037e1f8427ce567Kenny Guy 38ed13187a745866483139e2878037e1f8427ce567Kenny Guy UserManagerCompatVL(Context context) { 39ed13187a745866483139e2878037e1f8427ce567Kenny Guy super(context); 40f9847b9bd3e5286fe10667ec12dab5b4c43355faDharmesh Mokani mPm = context.getPackageManager(); 4118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal mContext = context; 42ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 43ed13187a745866483139e2878037e1f8427ce567Kenny Guy 446075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani @Override 45ed13187a745866483139e2878037e1f8427ce567Kenny Guy public List<UserHandleCompat> getUserProfiles() { 46c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy List<UserHandle> users = mUserManager.getUserProfiles(); 47c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy if (users == null) { 48c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy return Collections.EMPTY_LIST; 49ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 50c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy ArrayList<UserHandleCompat> compatUsers = new ArrayList<UserHandleCompat>( 51c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy users.size()); 52c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy for (UserHandle user : users) { 53c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy compatUsers.add(UserHandleCompat.fromUser(user)); 54c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy } 55c2bd8101b8e26b9ebb2c079ae6867229dad3f196Kenny Guy return compatUsers; 56ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 57ed13187a745866483139e2878037e1f8427ce567Kenny Guy 586075170b838bfe7a040bbff25c2c22859b7d6ee5Dharmesh Mokani @Override 59ed13187a745866483139e2878037e1f8427ce567Kenny Guy public Drawable getBadgedDrawableForUser(Drawable unbadged, UserHandleCompat user) { 603d0854e4b8c0a6daaa80ac14c6bc7572a4e90916Dharmesh Mokani return mPm.getUserBadgedIcon(unbadged, user.getUser()); 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 } 683d0854e4b8c0a6daaa80ac14c6bc7572a4e90916Dharmesh Mokani return mPm.getUserBadgedLabel(label, user.getUser()); 69ed13187a745866483139e2878037e1f8427ce567Kenny Guy } 7018bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal 7118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal @Override 7218bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal public long getUserCreationTime(UserHandleCompat user) { 7318bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal // TODO: Use system API once available. 7418bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal SharedPreferences prefs = mContext.getSharedPreferences( 7518bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE); 7618bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal String key = USER_CREATION_TIME_KEY + getSerialNumberForUser(user); 7718bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal if (!prefs.contains(key)) { 7818bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal prefs.edit().putLong(key, System.currentTimeMillis()).apply(); 7918bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal } 8018bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal return prefs.getLong(key, 0); 8118bf8e2ffde3444d53aaa9654da02cdedd0b7cd1Sunny Goyal } 82ed13187a745866483139e2878037e1f8427ce567Kenny Guy} 83ed13187a745866483139e2878037e1f8427ce567Kenny Guy 84