17d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey/*
27d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * Copyright (C) 2015 The Android Open Source Project
37d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey *
47d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
57d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * you may not use this file except in compliance with the License.
67d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * You may obtain a copy of the License at
77d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey *
87d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
97d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey *
107d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * Unless required by applicable law or agreed to in writing, software
117d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
127d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * See the License for the specific language governing permissions and
147d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * limitations under the License.
157d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey */
167d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey
177d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkeypackage android.support.v4.os;
187d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey
197d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkeyimport android.content.Context;
207d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey
217d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey/**
227d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * Helper for accessing features in {@link android.os.UserManager}
237d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey * introduced after API level 4 in a backwards compatible fashion.
247d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey */
257d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkeypublic class UserManagerCompat {
26a8ed73fa46d66350ad4e3499fbbebcfc8c20be6aJeff Sharkey    private UserManagerCompat() {
27a8ed73fa46d66350ad4e3499fbbebcfc8c20be6aJeff Sharkey    }
28a8ed73fa46d66350ad4e3499fbbebcfc8c20be6aJeff Sharkey
297d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    /**
307d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * Return whether the calling user is running in a "locked" state. A user is
317d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * unlocked only after they've entered their credentials (such as a lock
327d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * pattern or PIN), and credential-encrypted private app data storage is
337d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * available.
34f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     *
35f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * @removed
36d805095048f6be52cddbd572ee343c4639ba8187Alan Viverette     * @deprecated Removed. Do not use.
377d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     */
38f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey    @Deprecated
397d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    public static boolean isUserRunningAndLocked(Context context) {
40f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey        return !isUserUnlocked(context);
417d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    }
427d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey
437d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    /**
447d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * Return whether the calling user is running in an "unlocked" state. A user
457d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * is unlocked only after they've entered their credentials (such as a lock
467d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * pattern or PIN), and credential-encrypted private app data storage is
477d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     * available.
48f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     *
49f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * @removed
50d805095048f6be52cddbd572ee343c4639ba8187Alan Viverette     * @deprecated Removed. Do not use.
517d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey     */
52f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey    @Deprecated
537d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    public static boolean isUserRunningAndUnlocked(Context context) {
54f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey        return isUserUnlocked(context);
55f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey    }
56f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey
57f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey    /**
58f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * Return whether the calling user is running in an "unlocked" state. A user
59f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * is unlocked only after they've entered their credentials (such as a lock
60f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * pattern or PIN), and credential-encrypted private app data storage is
61f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     * available.
62f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey     */
63f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey    public static boolean isUserUnlocked(Context context) {
64f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey        if (BuildCompat.isAtLeastN()) {
65f873ca191f1f4cbe257a4385015bf122f956941aJeff Sharkey            return UserManagerCompatApi24.isUserUnlocked(context);
66b515ab4e50cca0cc28e903e717607a4e2038cd18Jeff Sharkey        } else {
67b515ab4e50cca0cc28e903e717607a4e2038cd18Jeff Sharkey            return true;
68b515ab4e50cca0cc28e903e717607a4e2038cd18Jeff Sharkey        }
697d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey    }
707d91f3ce2418518ba6d0795a2fef1d0bb33e653aJeff Sharkey}
71