aboutsummaryrefslogtreecommitdiff
path: root/admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java')
-rw-r--r--admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java46
1 files changed, 42 insertions, 4 deletions
diff --git a/admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java b/admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java
index 3aef6178..9c2d9481 100644
--- a/admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java
+++ b/admin/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/NfcProvisioningFragment.java
@@ -18,10 +18,12 @@ package com.example.android.nfcprovisioning;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.NfcEvent;
+import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@@ -55,6 +57,7 @@ public class NfcProvisioningFragment extends Fragment implements
// View references
private EditText mEditPackageName;
+ private EditText mEditClassName;
private EditText mEditLocale;
private EditText mEditTimezone;
private EditText mEditWifiSsid;
@@ -74,6 +77,7 @@ public class NfcProvisioningFragment extends Fragment implements
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
// Retrieve view references
mEditPackageName = (EditText) view.findViewById(R.id.package_name);
+ mEditClassName = (EditText) view.findViewById(R.id.class_name);
mEditLocale = (EditText) view.findViewById(R.id.locale);
mEditTimezone = (EditText) view.findViewById(R.id.timezone);
mEditWifiSsid = (EditText) view.findViewById(R.id.wifi_ssid);
@@ -81,12 +85,15 @@ public class NfcProvisioningFragment extends Fragment implements
mEditWifiPassword = (EditText) view.findViewById(R.id.wifi_password);
// Bind event handlers
mEditPackageName.addTextChangedListener(new TextWatcherWrapper(R.id.package_name, this));
+ mEditClassName.addTextChangedListener(new TextWatcherWrapper(R.id.class_name, this));
mEditLocale.addTextChangedListener(new TextWatcherWrapper(R.id.locale, this));
mEditTimezone.addTextChangedListener(new TextWatcherWrapper(R.id.timezone, this));
mEditWifiSsid.addTextChangedListener(new TextWatcherWrapper(R.id.wifi_ssid, this));
mEditWifiSecurityType.addTextChangedListener(
new TextWatcherWrapper(R.id.wifi_security_type, this));
mEditWifiPassword.addTextChangedListener(new TextWatcherWrapper(R.id.wifi_password, this));
+ // Prior to API 23, the class name is not needed
+ mEditClassName.setVisibility(Build.VERSION.SDK_INT >= 23 ? View.VISIBLE : View.GONE);
}
@Override
@@ -117,9 +124,14 @@ public class NfcProvisioningFragment extends Fragment implements
if (!value.startsWith("\"") || !value.endsWith("\"")) {
value = "\"" + value + "\"";
}
- } else {
- value = e.getValue();
- }
+ } else //noinspection deprecation
+ if (e.getKey().equals(
+ DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME)
+ && Build.VERSION.SDK_INT >= 23) {
+ continue;
+ } else {
+ value = e.getValue();
+ }
properties.put(e.getKey(), value);
}
}
@@ -147,9 +159,28 @@ public class NfcProvisioningFragment extends Fragment implements
}
switch (id) {
case R.id.package_name:
+ //noinspection deprecation
mProvisioningValues.put(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME, s);
break;
+ case R.id.class_name:
+ if (Build.VERSION.SDK_INT >= 23) {
+ if (TextUtils.isEmpty(s)) {
+ mProvisioningValues.remove(
+ DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME);
+ } else {
+ // On API 23 and above, we can use
+ // EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME to specify the receiver
+ // in the device owner app. If the provisioning values contain this key,
+ // EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME is not read.
+ String packageName = mEditPackageName.getText().toString();
+ ComponentName name = new ComponentName(packageName, s);
+ mProvisioningValues.put(
+ DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME,
+ name.flattenToShortString());
+ }
+ }
+ break;
case R.id.locale:
mProvisioningValues.put(DevicePolicyManager.EXTRA_PROVISIONING_LOCALE, s);
break;
@@ -181,14 +212,21 @@ public class NfcProvisioningFragment extends Fragment implements
public void onLoadFinished(Loader<Map<String, String>> loader, Map<String, String> values) {
if (loader.getId() == LOADER_PROVISIONING_VALUES) {
mProvisioningValues = values;
+ //noinspection deprecation
mEditPackageName.setText(values.get(
DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME));
+ if (Build.VERSION.SDK_INT >= 23) {
+ ComponentName name = ComponentName.unflattenFromString(values.get(
+ DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME));
+ mEditClassName.setText(name.getClassName());
+ }
mEditLocale.setText(values.get(DevicePolicyManager.EXTRA_PROVISIONING_LOCALE));
mEditTimezone.setText(values.get(DevicePolicyManager.EXTRA_PROVISIONING_TIME_ZONE));
mEditWifiSsid.setText(values.get(DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SSID));
mEditWifiSecurityType.setText(values.get(
DevicePolicyManager.EXTRA_PROVISIONING_WIFI_SECURITY_TYPE));
- mEditWifiPassword.setText(null);
+ mEditWifiPassword.setText(values.get(
+ DevicePolicyManager.EXTRA_PROVISIONING_WIFI_PASSWORD));
}
}