diff options
author | Xin Li <delphij@google.com> | 2022-03-08 00:18:47 +0000 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2022-03-08 00:18:47 +0000 |
commit | 08fc93e2400c7b80b5fb99511d0d722cf0df0154 (patch) | |
tree | b0a8863864dc4052d14f1678b4eb3978fc587f61 | |
parent | 85374bd515f7c04b9db3198d2090d0067562d069 (diff) | |
parent | aefaadf8a7f518dc33a7507399bf7568664b22ca (diff) | |
download | Provision-08fc93e2400c7b80b5fb99511d0d722cf0df0154.tar.gz |
Merge Android 12L
Bug: 222710654
Merged-In: Ib93078ad055ca21825e1d07b0e42b2ca20ceedb9
Change-Id: Ibd526d3cdfb8b5d18efa4b95123e3652232dfafc
-rw-r--r-- | src/com/android/car/provision/DefaultActivity.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/com/android/car/provision/DefaultActivity.java b/src/com/android/car/provision/DefaultActivity.java index bbd1b0a..b7cd163 100644 --- a/src/com/android/car/provision/DefaultActivity.java +++ b/src/com/android/car/provision/DefaultActivity.java @@ -42,12 +42,15 @@ import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.util.Log; import android.view.View; +import android.view.WindowInsets; +import android.view.WindowInsetsController; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; @@ -71,6 +74,22 @@ import java.util.List; * <li>Add option to setup managed-provisioning mode. * <li>Sets car-specific properties. * </ul> + * + * <p>By default, it doesn't show the UI, unless the {@code persist.dev.car_provision.show_ui} + * property is set to {@code true}. For example, you can change it by running something like: + <pre><code> + adb root + adb shell setprop persist.dev.car_provision.show_ui true && \ + adb shell pm enable --user cur com.android.car.provision/.DefaultActivity &&\ + adb shell settings put secure --user cur user_setup_complete 0 && \ + adb shell settings put secure --user 0 user_setup_complete 0 &&\ + adb shell settings put global device_provisioned 0 &&\ + adb shell rm -f /data/system/device_policies_version &&\ + adb shell rm -f /data/system/device_policies.xml &&\ + adb shell rm -f /data/system/device_owner_2.xml ;\ + adb shell rm -f /data/system/users/`adb shell am get-current-user`/profile_owner.xml + adb shell stop && adb shell start + <code></pre> */ public final class DefaultActivity extends Activity { @@ -100,6 +119,8 @@ public final class DefaultActivity extends Activity { + ".DeviceAdminReceiver"; private static final String LOCAL_TEST_DPC_NAME = "TestDPC (local only)"; + private static final String SHOW_UI_SYSTEM_PROPERTY = "persist.dev.car_provision.show_ui"; + static { DpcInfo testDpc = new DpcInfo(TEST_DPC_NAME, TEST_DPC_PACKAGE, @@ -149,6 +170,13 @@ public final class DefaultActivity extends Activity { return; } + if (!showUi()) { + Log.w(TAG, "onCreate(): skipping UI because " + SHOW_UI_SYSTEM_PROPERTY + + " was not set to true"); + finishSetup(); + return; + } + DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class); if (dpm.isDeviceManaged()) { Log.i(TAG, "onCreate(): skipping UI on managed device"); @@ -172,11 +200,22 @@ public final class DefaultActivity extends Activity { mFinishSetupButton.setOnClickListener((v) -> finishSetup()); mFactoryResetButton.setOnClickListener((v) -> factoryReset()); + hideSystemUi(); updateUi(); setManagedProvisioning(dpm); startMonitor(); } + private boolean showUi() { + boolean result = false; + try { + result = SystemProperties.getBoolean(SHOW_UI_SYSTEM_PROPERTY, false); + } catch (Exception e) { + Log.w(TAG, "error getting property " + SHOW_UI_SYSTEM_PROPERTY); + } + return result; + } + private void startMonitor() { Log.d(TAG, "startMonitor()"); registerReceiver(mDrivingStateExitReceiver, @@ -288,6 +327,17 @@ public final class DefaultActivity extends Activity { mCarDrivingStateMonitor = null; } + private void hideSystemUi() { + WindowInsetsController insetsController = getWindow().getDecorView() + .getWindowInsetsController(); + if (insetsController == null) { + Log.w(TAG, "No insets controller"); + return; + } + Log.d(TAG, "Hiding the system UI bars"); + insetsController.hide(WindowInsets.Type.navigationBars()); + } + private void updateUi() { String[] appNames = new String[sSupportedDpcApps.size()]; for (int i = 0; i < sSupportedDpcApps.size(); i++) { |