Lockdown settings in retail demo mode
When running in demo mode, additionally disable
the following settings screens:
- Date & Time
- More (network settings)
Bug: 27280140
Change-Id: I3132d0c46b24e1e9ca3842af058073eee3df0c90
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index 3ed3e82..94589f0 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -28,6 +28,8 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
+import android.os.UserManager;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.support.v14.preference.SwitchPreference;
@@ -38,17 +40,21 @@
import android.widget.TimePicker;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedSwitchPreference;
import com.android.settingslib.datetime.ZoneGetter;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
+import java.util.List;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
public class DateTimeSettings extends SettingsPreferenceFragment
- implements OnTimeSetListener, OnDateSetListener, OnPreferenceChangeListener {
+ implements OnTimeSetListener, OnDateSetListener, OnPreferenceChangeListener, Indexable {
private static final String HOURS_12 = "12";
private static final String HOURS_24 = "24";
@@ -380,4 +386,26 @@
return new SummaryProvider(activity, summaryLoader);
}
};
+
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new DateTimeSearchIndexProvider();
+
+ private static class DateTimeSearchIndexProvider extends BaseSearchIndexProvider {
+
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ List<SearchIndexableResource> result = new ArrayList<>();
+ // Remove data/time settings from search in demo mode
+ if (UserManager.isDeviceInDemoMode(context)) {
+ return result;
+ }
+
+ SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.date_time_prefs;
+ result.add(sir);
+
+ return result;
+ }
+ }
}
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index fcee935..17ce8a1 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1058,6 +1058,13 @@
UserHandle.MU_ENABLED && UserManager.supportsMultipleUsers()
&& !Utils.isMonkeyRunning(), isAdmin, pm);
+ setTileEnabled(new ComponentName(packageName,
+ Settings.WirelessSettingsActivity.class.getName()),
+ !UserManager.isDeviceInDemoMode(this), isAdmin, pm);
+
+ setTileEnabled(new ComponentName(packageName,
+ Settings.DateTimeSettingsActivity.class.getName()),
+ !UserManager.isDeviceInDemoMode(this), isAdmin, pm);
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
setTileEnabled(new ComponentName(packageName,
Settings.PaymentSettingsActivity.class.getName()),
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 722a861..7e3b8d8 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -57,6 +57,7 @@
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
public class WirelessSettings extends SettingsPreferenceFragment implements Indexable {
@@ -410,6 +411,10 @@
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
+ // Remove wireless settings from search in demo mode
+ if (UserManager.isDeviceInDemoMode(context)) {
+ return Collections.emptyList();
+ }
SearchIndexableResource sir = new SearchIndexableResource(context);
sir.xmlResId = R.xml.wireless_settings;
return Arrays.asList(sir);
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 08a0d0c..ff633e0 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -272,7 +272,7 @@
sResMap.put(DateTimeSettings.class.getName(),
new SearchIndexableResource(
Ranking.getRankForClassName(DateTimeSettings.class.getName()),
- R.xml.date_time_prefs,
+ NO_DATA_RES_ID,
DateTimeSettings.class.getName(),
R.drawable.ic_settings_date_time));