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