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