summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2022-03-08 00:18:47 +0000
committerXin Li <delphij@google.com>2022-03-08 00:18:47 +0000
commit08fc93e2400c7b80b5fb99511d0d722cf0df0154 (patch)
treeb0a8863864dc4052d14f1678b4eb3978fc587f61
parent85374bd515f7c04b9db3198d2090d0067562d069 (diff)
parentaefaadf8a7f518dc33a7507399bf7568664b22ca (diff)
downloadProvision-08fc93e2400c7b80b5fb99511d0d722cf0df0154.tar.gz
Merge Android 12L
Bug: 222710654 Merged-In: Ib93078ad055ca21825e1d07b0e42b2ca20ceedb9 Change-Id: Ibd526d3cdfb8b5d18efa4b95123e3652232dfafc
-rw-r--r--src/com/android/car/provision/DefaultActivity.java50
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++) {