summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorSander Alewijnse <salewijnse@google.com>2014-04-25 14:56:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-04-25 14:56:24 +0000
commitaf55438d5910b4bb0d6f2795c4a6549d1ea73bf0 (patch)
treede619a754dce1e4f03cfd1ac3dfb5965f9243959 /src/com
parent522adeb7bb9c95f7b10aa42e7a16da3f026cffc4 (diff)
parent885c349f7658aee02af77da42400d360e93bb310 (diff)
downloadandroid_packages_apps_ManagedProvisioning-af55438d5910b4bb0d6f2795c4a6549d1ea73bf0.tar.gz
android_packages_apps_ManagedProvisioning-af55438d5910b4bb0d6f2795c4a6549d1ea73bf0.tar.bz2
android_packages_apps_ManagedProvisioning-af55438d5910b4bb0d6f2795c4a6549d1ea73bf0.zip
Merge "Check validity of the ProvisioningParams and rename some fields."
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java10
-rw-r--r--src/com/android/managedprovisioning/NfcMessageParser.java151
-rw-r--r--src/com/android/managedprovisioning/ProvisioningParams.java11
3 files changed, 106 insertions, 66 deletions
diff --git a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
index 13502890..5f280794 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
@@ -92,9 +92,9 @@ public class DeviceOwnerProvisioningActivity extends Activity {
Intent bumpData = getIntent();
try {
params = parser.parseNfcIntent(bumpData);
- } catch (NfcMessageParser.NfcParseException e) {
+ } catch (NfcMessageParser.ParseException e) {
ProvisionLogger.loge("Could not read Nfc data from intent", e);
- error(R.string.device_owner_error_nfc_parse_fail);
+ error(e.getErrorMessageId());
return;
}
@@ -121,9 +121,9 @@ public class DeviceOwnerProvisioningActivity extends Activity {
final DownloadPackageTask downloadPackageTask = new DownloadPackageTask(this,
params.mDownloadLocation, params.mHash);
final InstallPackageTask installPackageTask = new InstallPackageTask(this,
- params.mMdmPackageName, params.mMdmAdminReceiver);
+ params.mDeviceAdminPackageName, params.mAdminReceiver);
final SetDevicePolicyTask setDevicePolicyTask = new SetDevicePolicyTask(this,
- params.mMdmPackageName, params.mMdmAdminReceiver, params.mOwner);
+ params.mDeviceAdminPackageName, params.mAdminReceiver, params.mOwner);
// Set callbacks.
addWifiNetworkTask.setCallback(new AddWifiNetworkTask.Callback() {
@@ -254,6 +254,8 @@ public class DeviceOwnerProvisioningActivity extends Activity {
}
try {
ProvisionLogger.logd("Setting locale to " + locale);
+ // If locale is different from current locale this results in a configuration change,
+ // which will trigger the restarting of the activity.
LocalePicker.updateLocale(locale);
} catch (Exception e) {
ProvisionLogger.loge("Failed to set the system locale.");
diff --git a/src/com/android/managedprovisioning/NfcMessageParser.java b/src/com/android/managedprovisioning/NfcMessageParser.java
index 9138e043..3af188fc 100644
--- a/src/com/android/managedprovisioning/NfcMessageParser.java
+++ b/src/com/android/managedprovisioning/NfcMessageParser.java
@@ -48,50 +48,47 @@ public class NfcMessageParser {
private static final String NFC_MIME_TYPE = "application/com.android.managedprovisioning";
// Keys for the properties in the packet.
- private static final String TIMEOUT_KEY = "timeout"; // int
+ // They correspond to fields of ProvisioningParams (see {@link ProvisioningParams}).
private static final String TIME_ZONE_KEY = "timeZone";
- private static final String LOCAL_TIME_KEY = "localTime"; // long
+ private static final String LOCAL_TIME_KEY = "localTime";
private static final String LOCALE_KEY = "locale";
- private static final String OWNER_KEY = "owner";
private static final String WIFI_SSID_KEY = "wifiSsid";
- private static final String WIFI_HIDDEN_KEY = "wifiHidden"; // boolean
+ private static final String WIFI_HIDDEN_KEY = "wifiHidden";
private static final String WIFI_SECURITY_TYPE_KEY = "wifiSecurityType";
private static final String WIFI_PASSWORD_KEY = "wifiPassword";
private static final String WIFI_PROXY_HOST_KEY = "wifiProxyHost";
private static final String WIFI_PROXY_PORT_KEY = "wifiProxyPort"; // int
private static final String WIFI_PROXY_BYPASS_KEY = "wifiProxyBypassHosts";
- private static final String MDM_PACKAGE_KEY = "mdmPackageName";
- private static final String MDM_ADMIN_RECEIVER_KEY = "mdmAdminReceiver";
- private static final String MDM_DOWNLOAD_URL_KEY = "mdmDownloadUrl";
- private static final String MDM_PACKAGE_HASH_KEY = "mdmPackageHash";
+ private static final String DEVICE_ADMIN_PACKAGE_KEY = "deviceAdminPackage";
+ private static final String ADMIN_RECEIVER_KEY = "adminReceiver";
+ private static final String OWNER_KEY = "owner";
+ private static final String DOWNLOAD_LOCATION_KEY = "downloadLocation";
+ private static final String HASH_KEY = "hash";
// Ids of properties.
- private static final int TIMEOUT_ID = 0;
- private static final int TIME_ZONE_ID = 1;
- private static final int LOCAL_TIME_ID = 2;
- private static final int LOCALE_ID = 3;
- private static final int OWNER_ID = 4;
- private static final int WIFI_SSID_ID = 5;
- private static final int WIFI_HIDDEN_ID = 6;
- private static final int WIFI_SECURITY_TYPE_ID = 7;
- private static final int WIFI_PASSWORD_ID = 8;
- private static final int WIFI_PROXY_HOST_ID = 9;
- private static final int WIFI_PROXY_PORT_ID = 10;
- private static final int WIFI_PROXY_BYPASS_ID = 11;
- private static final int MDM_PACKAGE_ID = 12;
- private static final int MDM_ADMIN_RECEIVER_ID = 13;
- private static final int MDM_DOWNLOAD_URL_ID = 14;
- private static final int MDM_PACKAGE_HASH_ID = 15;
+ private static final int TIME_ZONE_ID = 0;
+ private static final int LOCAL_TIME_ID = 1;
+ private static final int LOCALE_ID = 2;
+ private static final int WIFI_SSID_ID = 3;
+ private static final int WIFI_HIDDEN_ID = 4;
+ private static final int WIFI_SECURITY_TYPE_ID = 5;
+ private static final int WIFI_PASSWORD_ID = 6;
+ private static final int WIFI_PROXY_HOST_ID = 7;
+ private static final int WIFI_PROXY_PORT_ID = 8;
+ private static final int WIFI_PROXY_BYPASS_ID = 9;
+ private static final int DEVICE_ADMIN_PACKAGE_ID = 10;
+ private static final int ADMIN_RECEIVER_ID = 11;
+ private static final int OWNER_ID = 12;
+ private static final int DOWNLOAD_LOCATION_ID = 13;
+ private static final int HASH_ID = 14;
+ // Map from keys to ids.
private static final HashMap<String, Integer> mKeyToId = new HashMap<String, Integer>();
static {
- mKeyToId.put(TIMEOUT_KEY, TIMEOUT_ID);
mKeyToId.put(TIME_ZONE_KEY, TIME_ZONE_ID);
mKeyToId.put(LOCAL_TIME_KEY, LOCAL_TIME_ID);
- mKeyToId.put(LOCAL_TIME_KEY, LOCAL_TIME_ID);
mKeyToId.put(LOCALE_KEY, LOCALE_ID);
- mKeyToId.put(OWNER_KEY, OWNER_ID);
mKeyToId.put(WIFI_SSID_KEY, WIFI_SSID_ID);
mKeyToId.put(WIFI_HIDDEN_KEY, WIFI_HIDDEN_ID);
mKeyToId.put(WIFI_SECURITY_TYPE_KEY, WIFI_SECURITY_TYPE_ID);
@@ -99,13 +96,15 @@ public class NfcMessageParser {
mKeyToId.put(WIFI_PROXY_HOST_KEY, WIFI_PROXY_HOST_ID);
mKeyToId.put(WIFI_PROXY_PORT_KEY, WIFI_PROXY_PORT_ID);
mKeyToId.put(WIFI_PROXY_BYPASS_KEY, WIFI_PROXY_BYPASS_ID);
- mKeyToId.put(MDM_PACKAGE_KEY, MDM_PACKAGE_ID);
- mKeyToId.put(MDM_ADMIN_RECEIVER_KEY, MDM_ADMIN_RECEIVER_ID);
- mKeyToId.put(MDM_DOWNLOAD_URL_KEY, MDM_DOWNLOAD_URL_ID);
- mKeyToId.put(MDM_PACKAGE_HASH_KEY, MDM_PACKAGE_HASH_ID);
+ mKeyToId.put(DEVICE_ADMIN_PACKAGE_KEY, DEVICE_ADMIN_PACKAGE_ID);
+ mKeyToId.put(ADMIN_RECEIVER_KEY, ADMIN_RECEIVER_ID);
+ mKeyToId.put(OWNER_KEY, OWNER_ID);
+ mKeyToId.put(DOWNLOAD_LOCATION_KEY, DOWNLOAD_LOCATION_ID);
+ mKeyToId.put(HASH_KEY, HASH_ID);
}
- public ProvisioningParams parseNfcIntent(Intent nfcIntent) throws NfcParseException {
+ public ProvisioningParams parseNfcIntent(Intent nfcIntent)
+ throws ParseException {
ProvisionLogger.logi("Processing NFC Payload.");
if (nfcIntent.hasExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)) {
@@ -124,13 +123,15 @@ public class NfcMessageParser {
}
}
} else {
- throw new NfcParseException(
- "Intent does not contain EXTRA_NDEF_MESSAGES.");
+ throw new ParseException(
+ "Intent does not contain EXTRA_NDEF_MESSAGES.",
+ R.string.device_owner_error_nfc_parse_fail);
}
return null;
}
- private ProvisioningParams parseNfcProperties(String data) throws NfcParseException {
+ private ProvisioningParams parseNfcProperties(String data)
+ throws ParseException {
ProvisionLogger.logd("Processing NFC Properties.");
ProvisioningParams params = new ProvisioningParams();
try {
@@ -142,11 +143,15 @@ public class NfcMessageParser {
String propName = (String) propertyNames.nextElement();
putPropertyByString(propName, props.getProperty(propName), params);
}
+
+ checkValidityOfProvisioningParams(params);
return params;
} catch (IOException e) {
- throw new NfcParseException("Couldn't load payload", e);
+ throw new ParseException("Couldn't load payload",
+ R.string.device_owner_error_nfc_parse_fail, e);
} catch (NumberFormatException e) {
- throw new NfcParseException("Incorrect numberformat in Nfc message.", e);
+ throw new ParseException("Incorrect numberformat in Nfc message.",
+ R.string.device_owner_error_nfc_parse_fail, e);
}
}
@@ -167,9 +172,6 @@ public class NfcMessageParser {
return;
}
switch(id) {
- case TIMEOUT_ID:
- params.mTimeout = Integer.parseInt(value);
- break;
case TIME_ZONE_ID:
params.mTimeZone = value;
break;
@@ -183,9 +185,6 @@ public class NfcMessageParser {
throw new NumberFormatException("The locale code is not 5 characters long.");
}
break;
- case OWNER_ID:
- params.mOwner = value;
- break;
case WIFI_SSID_ID:
params.mWifiSsid = value;
break;
@@ -207,16 +206,19 @@ public class NfcMessageParser {
case WIFI_PROXY_BYPASS_ID:
params.mWifiProxyBypassHosts = value;
break;
- case MDM_PACKAGE_ID:
- params.mMdmPackageName = value;
+ case DEVICE_ADMIN_PACKAGE_ID:
+ params.mDeviceAdminPackageName = value;
break;
- case MDM_ADMIN_RECEIVER_ID:
- params.mMdmAdminReceiver = value;
+ case ADMIN_RECEIVER_ID:
+ params.mAdminReceiver = value;
break;
- case MDM_DOWNLOAD_URL_ID:
+ case OWNER_ID:
+ params.mOwner = value;
+ break;
+ case DOWNLOAD_LOCATION_ID:
params.mDownloadLocation = value;
break;
- case MDM_PACKAGE_HASH_ID:
+ case HASH_ID:
params.mHash = new BigInteger(value,16).toByteArray();
break;
default:
@@ -228,17 +230,54 @@ public class NfcMessageParser {
}
/**
+ * Check whether necessary fields are set.
+ */
+ private void checkValidityOfProvisioningParams(ProvisioningParams params)
+ throws ParseException {
+ if (params.mDeviceAdminPackageName == null) {
+ throw new ParseException("Must provide the name of the device admin package.",
+ R.string.device_owner_error_no_package_name);
+ }
+ if (params.mAdminReceiver == null) {
+ throw new ParseException("Must provide the full class name of the admin receiver " +
+ "that is inside the device owner package.",
+ R.string.device_owner_error_no_admin_receiver);
+ }
+ if (params.mDownloadLocation != null) {
+ if (params.mHash == null) {
+ throw new ParseException("Hash of installer file is required for downloading " +
+ "device admin file, but not provided.",
+ R.string.device_owner_error_no_hash);
+ }
+ if (params.mWifiSsid == null) {
+ throw new ParseException("Wifi ssid is required for downloading device admin " +
+ "file, but not provided.",
+ R.string.device_owner_error_no_wifi_ssid);
+ }
+ }
+ }
+
+ /**
* Exception thrown when the ProvisioningParams initialization failed completely.
*
* Note: We're using a custom exception to avoid catching subsequent exceptions that might be
* significant.
*/
- public static class NfcParseException extends Exception {
- public NfcParseException(String message) {
- super(message);
- }
- public NfcParseException(String message, Throwable t) {
- super(message, t);
- }
+ public static class ParseException extends Exception {
+ private int mErrorMessageId;
+
+ public ParseException(String message, int errorMessageId) {
+ super(message);
+ mErrorMessageId = errorMessageId;
+ }
+
+ public ParseException(String message, int errorMessageId, Throwable t) {
+ super(message, t);
+ mErrorMessageId = errorMessageId;
+ }
+
+ public int getErrorMessageId() {
+ return mErrorMessageId;
+ }
}
} \ No newline at end of file
diff --git a/src/com/android/managedprovisioning/ProvisioningParams.java b/src/com/android/managedprovisioning/ProvisioningParams.java
index d7c4540b..afd93ec3 100644
--- a/src/com/android/managedprovisioning/ProvisioningParams.java
+++ b/src/com/android/managedprovisioning/ProvisioningParams.java
@@ -22,11 +22,9 @@ import java.util.Locale;
* Provisioning Parameters for DeviceOwner Provisioning
*/
public class ProvisioningParams {
- public static Integer mTimeout;
public static String mTimeZone;
public static Long mLocalTime;
public static Locale mLocale;
- public static String mOwner;
public static String mWifiSsid;
public static boolean mWifiHidden = false;
@@ -36,9 +34,10 @@ public class ProvisioningParams {
public static int mWifiProxyPort = 0;
public static String mWifiProxyBypassHosts;
- public static String mMdmPackageName;
- public static String mMdmAdminReceiver;
+ public static String mDeviceAdminPackageName; // Package name of the device admin package.
+ public static String mAdminReceiver; // Full class name of the admin receiver inside package.
+ public static String mOwner; // Human readable name of the institution that owns this device.
- public static String mDownloadLocation;
- public static byte[] mHash;
+ public static String mDownloadLocation; // Url where the device admin .apk is downloaded from.
+ public static byte[] mHash; // Hash of the .apk file (see {@link DownloadPackageTask).
}