diff options
author | Felipe Leme <felipeal@google.com> | 2021-02-01 04:45:24 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-02-01 04:45:24 +0000 |
commit | d2bfe8ccc9ce3a445be07656c040d3871108fb4f (patch) | |
tree | 002c250f1a63880edc4d86a1ba929a823f92fd5b | |
parent | 9ce4eb1210fc3afe5c543bc4e83c3b1d8678d366 (diff) | |
parent | 7ebcbed4cf96ed6aaceb60ae2590f226aabf26f8 (diff) | |
download | Provision-d2bfe8ccc9ce3a445be07656c040d3871108fb4f.tar.gz |
Implement dump(), so it can be used to add more DPCs. am: 7ebcbed4cf
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Car/Provision/+/13419387
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I0d26fb7b4daad3470667209f4207357ffd3358e7
-rw-r--r-- | src/com/android/car/provision/DefaultActivity.java | 85 | ||||
-rw-r--r-- | src/com/android/car/provision/DpcInfo.java | 8 |
2 files changed, 88 insertions, 5 deletions
diff --git a/src/com/android/car/provision/DefaultActivity.java b/src/com/android/car/provision/DefaultActivity.java index 347c6b1..a0534cc 100644 --- a/src/com/android/car/provision/DefaultActivity.java +++ b/src/com/android/car/provision/DefaultActivity.java @@ -55,6 +55,8 @@ import android.widget.TextView; import com.android.car.setupwizardlib.util.CarDrivingStateMonitor; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; @@ -169,6 +171,7 @@ public final class DefaultActivity extends Activity { mFinishSetupButton.setOnClickListener((v) -> finishSetup()); mFactoryResetButton.setOnClickListener((v) -> factoryReset()); + updateUi(); setManagedProvisioning(dpm); startMonitor(); } @@ -190,6 +193,82 @@ public final class DefaultActivity extends Activity { super.finish(); }; + @Override + public void dump(String prefix, FileDescriptor fd, PrintWriter pw, String[] args) { + if (args == null || args.length == 0) { + showDpcs(pw); + showHelp(pw); + return; + } + + if (args[0].equals("--help")) { + showHelp(pw); + return; + } + + addDpc(pw, args); + }; + + private void showDpcs(PrintWriter pw) { + pw.printf("%d DPCs\n", sSupportedDpcApps.size()); + sSupportedDpcApps.forEach((dpc) -> pw.printf("\t%s\n", dpc)); + } + + private void showHelp(PrintWriter pw) { + pw.println("\nTo add a new DPC, use: --name name --package-name package-name" + + "--receiver-name receiver-name [--legacy-activity-name legacy-activity-name] " + + "[--checksum checksum] [--download-url download-url]"); + } + + private void addDpc(PrintWriter pw, String[] args) { + String name = null; + String packageName = null; + String legacyActivityName = null; + String receiverName = null; + String checkSum = null; + String downloadUrl = null; + + for (int i = 0; i < args.length; i++) { + try { + switch (args[i]) { + case "--name": + name = args[++i]; + break; + case "--package-name": + packageName = args[++i]; + break; + case "--legacy-activity-name": + legacyActivityName = args[++i]; + break; + case "--receiver-name": + receiverName = args[++i]; + break; + case "--checksum": + checkSum = args[++i]; + break; + case "--download-url": + downloadUrl = args[++i]; + break; + default: + pw.printf("Invalid option at index %d: %s\n", i, args[i]); + return; + } + } catch (Exception e) { + // most likely a missing arg... + pw.printf("Error handing arg %d: %s\n", i, e); + return; + } + } + + DpcInfo dpc = new DpcInfo(name, packageName, legacyActivityName, receiverName, checkSum, + downloadUrl); + Log.i(TAG, "Adding new DPC from dump(): " + dpc); + sSupportedDpcApps.add(dpc); + pw.printf("Added new DPC: %s\n", dpc); + + updateUi(); + } + private void stopMonitor() { if (mDrivingStateExitReceiver != null) { unregisterReceiver(mDrivingStateExitReceiver); @@ -200,15 +279,17 @@ public final class DefaultActivity extends Activity { } } - private void setManagedProvisioning(DevicePolicyManager dpm) { + private void updateUi() { String[] appNames = new String[sSupportedDpcApps.size()]; for (int i = 0; i < sSupportedDpcApps.size(); i++) { appNames[i] = sSupportedDpcApps.get(i).name; } - mDpcAppsSpinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, appNames)); + mDpcAppsSpinner.setSelection(appNames.length - 1); + } + private void setManagedProvisioning(DevicePolicyManager dpm) { if (!getPackageManager() .hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)) { Log.i(TAG, "Disabling provisioning buttons because device does not have the " diff --git a/src/com/android/car/provision/DpcInfo.java b/src/com/android/car/provision/DpcInfo.java index 1c44107..4b88c4a 100644 --- a/src/com/android/car/provision/DpcInfo.java +++ b/src/com/android/car/provision/DpcInfo.java @@ -17,6 +17,8 @@ package com.android.car.provision; import android.content.ComponentName; +import java.util.Objects; + /** * Info about a Device Policy Controller app. */ @@ -31,10 +33,10 @@ final class DpcInfo { DpcInfo(String name, String packageName, String legacyActivityName, String receiverName, String checkSum, String downloadUrl) { - this.name = name; - this.packageName = packageName; + this.name = Objects.requireNonNull(name, "name cannot be null"); + this.packageName = Objects.requireNonNull(packageName, "packageName cannot be null"); + this.mReceiverName = Objects.requireNonNull(receiverName, "receiverName cannot be null"); this.mLegacyActivityName = legacyActivityName; - this.mReceiverName = receiverName; this.checkSum = checkSum; this.downloadUrl = downloadUrl; } |