1ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau/* 2ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * Copyright 2017, The Android Open Source Project 3ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * 4ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * Licensed under the Apache License, Version 2.0 (the "License"); 5ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * you may not use this file except in compliance with the License. 6ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * You may obtain a copy of the License at 7ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * 8ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * http://www.apache.org/licenses/LICENSE-2.0 9ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * 10ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * Unless required by applicable law or agreed to in writing, software 11ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * distributed under the License is distributed on an "AS IS" BASIS, 12ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * See the License for the specific language governing permissions and 14ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * limitations under the License. 15ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau */ 16ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chaupackage com.android.managedprovisioning.manageduser; 17ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau 18ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport android.app.admin.DevicePolicyManager; 19ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport android.content.BroadcastReceiver; 20ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport android.content.Context; 21ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport android.content.Intent; 22ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport android.os.UserHandle; 23ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau 24ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chauimport com.android.managedprovisioning.common.ProvisionLogger; 25ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau 26ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau/** 27ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau * This receiver is invoked after a managed user is created. 28ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau */ 29ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chaupublic class ManagedUserCreationListener extends BroadcastReceiver { 30ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau 31ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau @Override 32ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau public void onReceive(Context context, Intent intent) { 33ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau if (DevicePolicyManager.ACTION_MANAGED_USER_CREATED.equals(intent.getAction())) { 34ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau final int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL); 35ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau final boolean leaveAllSystemAppsEnabled = intent.getBooleanExtra( 36ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau DevicePolicyManager.EXTRA_PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED, false); 37ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau ProvisionLogger.logd("ACTION_MANAGED_USER_CREATED received for user " + userId); 38ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau final PendingResult result = goAsync(); 39ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau Thread thread = new Thread(() -> { 40ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau new ManagedUserCreationController(userId, leaveAllSystemAppsEnabled, context).run(); 41ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau result.finish(); 42ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau }); 43ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau thread.setPriority(Thread.MAX_PRIORITY); 44ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau thread.start(); 45ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau } else { 46ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau ProvisionLogger.logw("Unexpected intent action: " + intent.getAction()); 47ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau } 48ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau } 49ebe73b6e94e65fc82fde2c482844a05deb84e806Alex Chau} 50