UserManagerCompat.java revision f5e3744637db1598c389e62450627b2548f8f517
1f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright/*
2f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Copyright (C) 2014 The Android Open Source Project
3f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
4f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Licensed under the Apache License, Version 2.0 (the "License");
5f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * you may not use this file except in compliance with the License.
6f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * You may obtain a copy of the License at
7f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
8f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *      http://www.apache.org/licenses/LICENSE-2.0
9f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright *
10f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * Unless required by applicable law or agreed to in writing, software
11f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * distributed under the License is distributed on an "AS IS" BASIS,
12f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * See the License for the specific language governing permissions and
14f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright * limitations under the License.
15f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright */
16f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
17f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightpackage com.android.launcher3.compat;
18f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
19f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightimport android.content.Context;
20f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
21f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightimport com.android.launcher3.Utilities;
22fb8df2356ab108d5f56413bb524b3dac6a37af3eMichael Wright
23f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wrightimport java.util.List;
24fb8df2356ab108d5f56413bb524b3dac6a37af3eMichael Wright
25fb8df2356ab108d5f56413bb524b3dac6a37af3eMichael Wrightpublic abstract class UserManagerCompat {
26f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    protected UserManagerCompat() {
27f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    }
28f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
29f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    private static final Object sInstanceLock = new Object();
30f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    private static UserManagerCompat sInstance;
31f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright
32f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright    public static UserManagerCompat getInstance(Context context) {
33f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright        synchronized (sInstanceLock) {
34f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright            if (sInstance == null) {
35f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright                if (Utilities.ATLEAST_NOUGAT_MR1) {
36f9c2ada62f328fac9747983185463e4e67ef4f6bMichael Wright                    sInstance = new UserManagerCompatVNMr1(context.getApplicationContext());
37                } else if (Utilities.ATLEAST_NOUGAT) {
38                    sInstance = new UserManagerCompatVN(context.getApplicationContext());
39                } else if (Utilities.ATLEAST_MARSHMALLOW) {
40                    sInstance = new UserManagerCompatVM(context.getApplicationContext());
41                } else if (Utilities.ATLEAST_LOLLIPOP) {
42                    sInstance = new UserManagerCompatVL(context.getApplicationContext());
43                } else if (Utilities.ATLEAST_JB_MR1) {
44                    sInstance = new UserManagerCompatV17(context.getApplicationContext());
45                } else {
46                    sInstance = new UserManagerCompatV16();
47                }
48            }
49            return sInstance;
50        }
51    }
52
53    /**
54     * Creates a cache for users.
55     */
56    public abstract void enableAndResetCache();
57
58    public abstract List<UserHandleCompat> getUserProfiles();
59    public abstract long getSerialNumberForUser(UserHandleCompat user);
60    public abstract UserHandleCompat getUserForSerialNumber(long serialNumber);
61    public abstract CharSequence getBadgedLabelForUser(CharSequence label, UserHandleCompat user);
62    public abstract long getUserCreationTime(UserHandleCompat user);
63    public abstract boolean isQuietModeEnabled(UserHandleCompat user);
64    public abstract boolean isUserUnlocked(UserHandleCompat user);
65
66    public abstract boolean isDemoUser();
67}
68