summaryrefslogtreecommitdiffstats
path: root/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
diff options
context:
space:
mode:
authorSander Alewijnse <salewijnse@google.com>2014-09-08 12:21:26 +0100
committerSander Alewijnse <salewijnse@google.com>2014-09-10 13:30:35 +0100
commit8f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cd (patch)
tree3b5ce663029332cddf204e6688f4d20081e04e8f /src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
parent247e85f517cf85c69c0aa4abe1b9ce026c19c1ec (diff)
downloadandroid_packages_apps_ManagedProvisioning-8f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cd.tar.gz
android_packages_apps_ManagedProvisioning-8f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cd.tar.bz2
android_packages_apps_ManagedProvisioning-8f9bd13b0d15d6fb1b6f27d28c94d37f8252a8cd.zip
Add interstitial in device owner setup flow.
Only for non Nfc flow. Furthermore, provide means to avoid device encryption by adding check for system properties flag, which is already done that way in BYOD case. Bug:17383943 Change-Id: If8c9dceb77527ad0937c013841e7784a4d39a464
Diffstat (limited to 'src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java')
-rw-r--r--src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java66
1 files changed, 57 insertions, 9 deletions
diff --git a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
index cdde522f..ecd144f6 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
@@ -29,6 +29,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.UserHandle;
+import android.os.SystemProperties;
import android.provider.Settings.Global;
import android.provider.Settings.Secure;
import android.support.v4.content.LocalBroadcastManager;
@@ -66,6 +67,8 @@ import java.util.Locale;
* </p>
*/
public class DeviceOwnerProvisioningActivity extends Activity {
+ private static final String KEY_USER_CONSENTED = "user_consented";
+
private static final int ENCRYPT_DEVICE_REQUEST_CODE = 1;
private static final int WIFI_REQUEST_CODE = 2;
@@ -74,14 +77,22 @@ public class DeviceOwnerProvisioningActivity extends Activity {
private Dialog mDialog; // The cancel or error dialog that is currently shown.
private boolean mDone; // Indicates whether the service has sent ACTION_PROVISIONING_SUCCESS.
+ // Run when wifi picker activity reports success.
private Runnable mOnWifiConnectedRunnable;
private Intent mProvisioningCompleteIntent;
+ // Indicates whether user consented by clicking on positive button of interstitial.
+ private boolean mUserConsented = false;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (savedInstanceState != null) {
+ mUserConsented = savedInstanceState.getBoolean(KEY_USER_CONSENTED, false);
+ }
+
ProvisionLogger.logd("Device owner provisioning activity ONCREATE");
// Check whether we can provision.
@@ -118,6 +129,11 @@ public class DeviceOwnerProvisioningActivity extends Activity {
MessageParser parser = new MessageParser();
try {
params = parser.parseIntent(getIntent());
+ mOnWifiConnectedRunnable = new Runnable() {
+ public void run() {
+ showInterstitialAndProvision(params);
+ }
+ };
} catch (MessageParser.ParseException e) {
ProvisionLogger.loge("Could not read data from intent", e);
error(e.getErrorMessageId(), false /* no factory reset */);
@@ -125,7 +141,8 @@ public class DeviceOwnerProvisioningActivity extends Activity {
}
// Ask to encrypt the device before proceeding
- if (!EncryptDeviceActivity.isDeviceEncrypted()) {
+ if (!(EncryptDeviceActivity.isDeviceEncrypted()
+ || SystemProperties.getBoolean("persist.sys.no_req_encrypt", false))) {
requestEncryption(parser, params);
finish();
return;
@@ -135,19 +152,45 @@ public class DeviceOwnerProvisioningActivity extends Activity {
// Have the user pick a wifi network if necessary.
if (!AddWifiNetworkTask.isConnectedToWifi(this) && TextUtils.isEmpty(params.mWifiSsid) &&
!TextUtils.isEmpty(params.mDeviceAdminPackageDownloadLocation)) {
-
- mOnWifiConnectedRunnable = new Runnable() {
- public void run() {
- startDeviceOwnerProvisioningService(params);
- }
- };
-
requestWifiPick();
return;
// Wait for onActivityResult.
}
- startDeviceOwnerProvisioningService(params);
+ showInterstitialAndProvision(params);
+ }
+
+ private void showInterstitialAndProvision(final ProvisioningParams params) {
+ if (mUserConsented || params.mStartedByNfc) {
+ startDeviceOwnerProvisioningService(params);
+ } else {
+ String message = getString(R.string.admin_has_ability_to_monitor_device) + "\n\n"
+ + getString(R.string.contact_your_admin_for_more_info);
+
+ // Notify the user that the admin will have full control over the device,
+ // then start provisioning.
+ new AlertDialog.Builder(DeviceOwnerProvisioningActivity.this)
+ .setCancelable(false)
+ .setMessage(message)
+ .setPositiveButton(R.string.ok_setup,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ mUserConsented = true;
+ dialog.cancel();
+ startDeviceOwnerProvisioningService(params);
+ }
+ })
+ .setNegativeButton(R.string.cancel_setup,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ finish();
+ }
+ })
+ .show();
+ }
}
private void startDeviceOwnerProvisioningService(ProvisioningParams params) {
@@ -351,6 +394,11 @@ public class DeviceOwnerProvisioningActivity extends Activity {
}
@Override
+ protected void onSaveInstanceState(Bundle outState) {
+ outState.putBoolean(KEY_USER_CONSENTED, mUserConsented);
+ }
+
+ @Override
public void onDestroy() {
ProvisionLogger.logd("Device owner provisioning activity ONDESTROY");
if (mServiceMessageReceiver != null) {