1 /* 2 * Copyright 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.managedprovisioning.ota; 17 18 import android.content.BroadcastReceiver; 19 import android.content.Context; 20 import android.content.Intent; 21 22 import com.android.managedprovisioning.common.ProvisionLogger; 23 24 /** 25 * This receiver is invoked after a system update. 26 */ 27 public class PreBootListener extends BroadcastReceiver { 28 29 @Override onReceive(Context context, Intent intent)30 public void onReceive(Context context, Intent intent) { 31 ProvisionLogger.logd("Received PreBoot broadcast " + intent.getAction()); 32 if (Intent.ACTION_PRE_BOOT_COMPLETED.equals(intent.getAction())) { 33 final PendingResult result = goAsync(); 34 Thread thread = new Thread(() -> { 35 new OtaController(context).run(); 36 result.finish(); 37 }); 38 thread.setPriority(Thread.MAX_PRIORITY); 39 ProvisionLogger.logd("PreBoot completed, starting OTA controller job"); 40 thread.start(); 41 } else { 42 ProvisionLogger.logw("Unexpected intent action: " + intent.getAction()); 43 } 44 } 45 } 46