WorkLockActivityController.java revision 3c82d3d5bfea9b6483ad0264e6956eb5a00a2a4a
1d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann/* 2d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * Copyright (C) 2017 The Android Open Source Project 3d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * 4d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * Licensed under the Apache License, Version 2.0 (the "License"); 5d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * you may not use this file except in compliance with the License. 6d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * You may obtain a copy of the License at 7d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * 8d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * http://www.apache.org/licenses/LICENSE-2.0 9d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * 10d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * Unless required by applicable law or agreed to in writing, software 11d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * distributed under the License is distributed on an "AS IS" BASIS, 12d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann * See the License for the specific language governing permissions and 1459b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann * limitations under the License 15d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann */ 1659b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann 17d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannpackage com.android.systemui.keyguard; 18d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann 19d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.app.Activity; 20d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.app.ActivityOptions; 21d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.app.KeyguardManager; 22d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.content.ComponentName; 23d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.content.Context; 24d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.content.Intent; 25d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmannimport android.os.Bundle; 2659b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmannimport android.os.UserHandle; 2759b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann 2859b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmannimport com.android.systemui.recents.events.EventBus; 2959b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmannimport com.android.systemui.recents.misc.SystemServicesProxy; 3059b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmannimport com.android.systemui.recents.misc.SystemServicesProxy.TaskStackListener; 3159b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann 3259b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmannpublic class WorkLockActivityController { 3359b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann private final Context mContext; 3459b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann final SystemServicesProxy mSsp; 3559b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann 3659b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann public WorkLockActivityController(Context context) { 3759b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann mContext = context; 3859b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann mSsp = SystemServicesProxy.getInstance(context); 3959b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann 4059b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann EventBus.getDefault().register(this); 4159b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann mSsp.registerTaskStackListener(mLockListener); 42d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann } 43d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann 44d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann private void startWorkChallengeInTask(int taskId, int userId) { 45d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann Intent intent = new Intent(KeyguardManager.ACTION_CONFIRM_DEVICE_CREDENTIAL_WITH_USER) 46d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann .setComponent(new ComponentName(mContext, WorkLockActivity.class)) 47d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann .putExtra(Intent.EXTRA_USER_ID, userId) 48d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann .putExtra(WorkLockActivity.EXTRA_TASK_DESCRIPTION, mSsp.getTaskDescription(taskId)) 49d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann .addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 50d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann | Intent.FLAG_ACTIVITY_CLEAR_TOP); 51d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann 52d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann final ActivityOptions options = ActivityOptions.makeBasic(); 53d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann options.setLaunchTaskId(taskId); 54d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann options.setTaskOverlay(true, false /* canResume */); 55d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann mContext.startActivityAsUser(intent, options.toBundle(), UserHandle.CURRENT); 56d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann } 57d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann 58d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann private final TaskStackListener mLockListener = new TaskStackListener() { 59d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann @Override 60d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann public void onTaskProfileLocked(int taskId, int userId) { 61d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann startWorkChallengeInTask(taskId, userId); 6259b2f363c5b69712662c6e129f78230d350eeb5aMarc R. Hoffmann } 63d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann }; 64d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann} 65d850ed49b22d2a0c84a3b317acec8df7e7159016Marc R. Hoffmann