Show setting tiles for secondary users
Change-Id: I912b3324753731a6633cf6fabfc26ae2e61963a0 Fix: 34176802 Test: runtest --path tests/unit/src/com/android/settings/core/SettingsGatewayTest.java
This commit is contained in:
@@ -50,7 +50,6 @@ public class Settings extends SettingsActivity {
|
|||||||
public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
|
public static class LocalePickerActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class LanguageAndRegionSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class LanguageAndRegionSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ }
|
public static class UserDictionarySettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class HomeSettingsActivity extends SettingsActivity { /* empty */ }
|
|
||||||
public static class DisplaySettingsActivity extends SettingsActivity { /* empty */ }
|
public static class DisplaySettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class NightDisplaySettingsActivity extends SettingsActivity { /* empty */ }
|
public static class NightDisplaySettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class DeviceInfoSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
|
@@ -165,64 +165,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
private CharSequence mInitialTitle;
|
private CharSequence mInitialTitle;
|
||||||
private int mInitialTitleResId;
|
private int mInitialTitleResId;
|
||||||
|
|
||||||
// Show only these settings for restricted users
|
|
||||||
private String[] SETTINGS_FOR_RESTRICTED = {
|
|
||||||
//wireless_section
|
|
||||||
WifiSettingsActivity.class.getName(),
|
|
||||||
Settings.BluetoothSettingsActivity.class.getName(),
|
|
||||||
Settings.DataUsageSummaryActivity.class.getName(),
|
|
||||||
Settings.SimSettingsActivity.class.getName(),
|
|
||||||
Settings.WirelessSettingsActivity.class.getName(),
|
|
||||||
//device_section
|
|
||||||
Settings.HomeSettingsActivity.class.getName(),
|
|
||||||
Settings.SoundSettingsActivity.class.getName(),
|
|
||||||
Settings.DisplaySettingsActivity.class.getName(),
|
|
||||||
Settings.StorageSettingsActivity.class.getName(),
|
|
||||||
Settings.ManageApplicationsActivity.class.getName(),
|
|
||||||
Settings.PowerUsageSummaryActivity.class.getName(),
|
|
||||||
Settings.GestureSettingsActivity.class.getName(),
|
|
||||||
//personal_section
|
|
||||||
Settings.LocationSettingsActivity.class.getName(),
|
|
||||||
Settings.SecuritySettingsActivity.class.getName(),
|
|
||||||
Settings.InputMethodAndLanguageSettingsActivity.class.getName(),
|
|
||||||
Settings.UserSettingsActivity.class.getName(),
|
|
||||||
Settings.AccountSettingsActivity.class.getName(),
|
|
||||||
//system_section
|
|
||||||
Settings.DateTimeSettingsActivity.class.getName(),
|
|
||||||
Settings.DeviceInfoSettingsActivity.class.getName(),
|
|
||||||
Settings.AccessibilitySettingsActivity.class.getName(),
|
|
||||||
Settings.PrintSettingsActivity.class.getName(),
|
|
||||||
Settings.PaymentSettingsActivity.class.getName(),
|
|
||||||
Settings.EnterprisePrivacySettingsActivity.class.getName(),
|
|
||||||
|
|
||||||
// New IA
|
|
||||||
// Home page
|
|
||||||
Settings.NetworkDashboardActivity.class.getName(),
|
|
||||||
Settings.ConnectedDeviceDashboardActivity.class.getName(),
|
|
||||||
Settings.AppAndNotificationDashboardActivity.class.getName(),
|
|
||||||
"com.android.settings.Settings.BatteryDashboardAlias",
|
|
||||||
"com.android.settings.Settings.DisplayDashboardAlias",
|
|
||||||
"com.android.settings.Settings.SoundDashboardAlias",
|
|
||||||
"com.android.settings.Settings.SecurityDashboardAlias",
|
|
||||||
Settings.UserAndAccountDashboardActivity.class.getName(),
|
|
||||||
Settings.SystemDashboardActivity.class.getName(),
|
|
||||||
Settings.SupportDashboardActivity.class.getName(),
|
|
||||||
// Home page > Apps & Notifications
|
|
||||||
"com.android.settings.Settings.ManageApplicationsDashboardAlias",
|
|
||||||
"com.android.settings.Settings.PaymentSettingsDashboardAlias",
|
|
||||||
// Home page > Network & Internet
|
|
||||||
"com.android.settings.Settings.WifiDashboardAlias",
|
|
||||||
"com.android.settings.Settings.DataUsageDashboardAlias",
|
|
||||||
// Home page > Security
|
|
||||||
"com.android.settings.Settings.LocationDashboardAlias",
|
|
||||||
// Home page > System
|
|
||||||
Settings.LanguageAndRegionSettingsActivity.class.getName(),
|
|
||||||
Settings.InputAndGestureSettingsActivity.class.getName(),
|
|
||||||
"com.android.settings.Settings.DateTimeDashboardAlias",
|
|
||||||
"com.android.settings.Settings.AccessibilityDashboardAlias",
|
|
||||||
"com.android.settings.Settings.AboutDeviceDashboardAlias",
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = {
|
private static final String[] LIKE_SHORTCUT_INTENT_ACTION_ARRAY = {
|
||||||
"android.settings.APPLICATION_DETAILS_SETTINGS"
|
"android.settings.APPLICATION_DETAILS_SETTINGS"
|
||||||
};
|
};
|
||||||
@@ -1009,8 +951,10 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
for (DashboardCategory category : categories) {
|
for (DashboardCategory category : categories) {
|
||||||
for (Tile tile : category.tiles) {
|
for (Tile tile : category.tiles) {
|
||||||
ComponentName component = tile.intent.getComponent();
|
ComponentName component = tile.intent.getComponent();
|
||||||
if (packageName.equals(component.getPackageName()) && !ArrayUtils.contains(
|
final String name = component.getClassName();
|
||||||
SETTINGS_FOR_RESTRICTED, component.getClassName())) {
|
final boolean isEnabledForRestricted = ArrayUtils.contains(
|
||||||
|
SettingsGateway.SETTINGS_FOR_RESTRICTED, name);
|
||||||
|
if (packageName.equals(component.getPackageName()) && !isEnabledForRestricted) {
|
||||||
setTileEnabled(component, false, isAdmin);
|
setTileEnabled(component, false, isAdmin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1055,7 +999,8 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
|
|
||||||
private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin) {
|
private void setTileEnabled(ComponentName component, boolean enabled, boolean isAdmin) {
|
||||||
if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName())
|
if (UserHandle.MU_ENABLED && !isAdmin && getPackageName().equals(component.getPackageName())
|
||||||
&& !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, component.getClassName())) {
|
&& !ArrayUtils.contains(SettingsGateway.SETTINGS_FOR_RESTRICTED,
|
||||||
|
component.getClassName())) {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
setTileEnabled(component, enabled);
|
setTileEnabled(component, enabled);
|
||||||
|
@@ -32,6 +32,7 @@ import com.android.settings.IccLockSettings;
|
|||||||
import com.android.settings.MasterClear;
|
import com.android.settings.MasterClear;
|
||||||
import com.android.settings.PrivacySettings;
|
import com.android.settings.PrivacySettings;
|
||||||
import com.android.settings.SecuritySettings;
|
import com.android.settings.SecuritySettings;
|
||||||
|
import com.android.settings.Settings;
|
||||||
import com.android.settings.TestingSettings;
|
import com.android.settings.TestingSettings;
|
||||||
import com.android.settings.TetherSettings;
|
import com.android.settings.TetherSettings;
|
||||||
import com.android.settings.TrustedCredentialsSettings;
|
import com.android.settings.TrustedCredentialsSettings;
|
||||||
@@ -244,4 +245,60 @@ public class SettingsGateway {
|
|||||||
UserAndAccountDashboardFragment.class.getName(),
|
UserAndAccountDashboardFragment.class.getName(),
|
||||||
EnterprisePrivacySettings.class.getName(),
|
EnterprisePrivacySettings.class.getName(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static final String[] SETTINGS_FOR_RESTRICTED = {
|
||||||
|
//wireless_section
|
||||||
|
Settings.WifiSettingsActivity.class.getName(),
|
||||||
|
Settings.BluetoothSettingsActivity.class.getName(),
|
||||||
|
Settings.DataUsageSummaryActivity.class.getName(),
|
||||||
|
Settings.SimSettingsActivity.class.getName(),
|
||||||
|
Settings.WirelessSettingsActivity.class.getName(),
|
||||||
|
//device_section
|
||||||
|
Settings.SoundSettingsActivity.class.getName(),
|
||||||
|
Settings.DisplaySettingsActivity.class.getName(),
|
||||||
|
Settings.StorageSettingsActivity.class.getName(),
|
||||||
|
Settings.ManageApplicationsActivity.class.getName(),
|
||||||
|
Settings.PowerUsageSummaryActivity.class.getName(),
|
||||||
|
Settings.GestureSettingsActivity.class.getName(),
|
||||||
|
//personal_section
|
||||||
|
Settings.LocationSettingsActivity.class.getName(),
|
||||||
|
Settings.SecuritySettingsActivity.class.getName(),
|
||||||
|
Settings.InputMethodAndLanguageSettingsActivity.class.getName(),
|
||||||
|
Settings.UserSettingsActivity.class.getName(),
|
||||||
|
Settings.AccountSettingsActivity.class.getName(),
|
||||||
|
//system_section
|
||||||
|
Settings.DateTimeSettingsActivity.class.getName(),
|
||||||
|
Settings.DeviceInfoSettingsActivity.class.getName(),
|
||||||
|
Settings.AccessibilitySettingsActivity.class.getName(),
|
||||||
|
Settings.PrintSettingsActivity.class.getName(),
|
||||||
|
Settings.PaymentSettingsActivity.class.getName(),
|
||||||
|
Settings.EnterprisePrivacySettingsActivity.class.getName(),
|
||||||
|
|
||||||
|
// New IA
|
||||||
|
// Home page
|
||||||
|
Settings.NetworkDashboardActivity.class.getName(),
|
||||||
|
Settings.ConnectedDeviceDashboardActivity.class.getName(),
|
||||||
|
Settings.AppAndNotificationDashboardActivity.class.getName(),
|
||||||
|
"com.android.settings.BatteryDashboardAlias",
|
||||||
|
"com.android.settings.DisplayDashboardAlias",
|
||||||
|
"com.android.settings.SoundDashboardAlias",
|
||||||
|
"com.android.settings.SecurityDashboardAlias",
|
||||||
|
Settings.UserAndAccountDashboardActivity.class.getName(),
|
||||||
|
Settings.SystemDashboardActivity.class.getName(),
|
||||||
|
Settings.SupportDashboardActivity.class.getName(),
|
||||||
|
// Home page > Apps & Notifications
|
||||||
|
"com.android.settings.ManageApplicationsDashboardAlias",
|
||||||
|
"com.android.settings.PaymentSettingsDashboardAlias",
|
||||||
|
// Home page > Network & Internet
|
||||||
|
"com.android.settings.WifiDashboardAlias",
|
||||||
|
"com.android.settings.DataUsageDashboardAlias",
|
||||||
|
// Home page > Security
|
||||||
|
"com.android.settings.LocationDashboardAlias",
|
||||||
|
// Home page > System
|
||||||
|
Settings.LanguageAndRegionSettingsActivity.class.getName(),
|
||||||
|
Settings.InputAndGestureSettingsActivity.class.getName(),
|
||||||
|
"com.android.settings.DateTimeDashboardAlias",
|
||||||
|
"com.android.settings.AccessibilityDashboardAlias",
|
||||||
|
"com.android.settings.AboutDeviceDashboardAlias",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.core;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
|
import android.support.test.InstrumentationRegistry;
|
||||||
|
import android.support.test.filters.SmallTest;
|
||||||
|
import android.support.test.runner.AndroidJUnit4;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.settings.core.gateway.SettingsGateway;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
|
||||||
|
@SmallTest
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class SettingsGatewayTest {
|
||||||
|
|
||||||
|
private static final String TAG = "SettingsGatewayTest";
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void allRestrictedActivityMustBeDefinedInManifest() {
|
||||||
|
final Context context = InstrumentationRegistry.getTargetContext();
|
||||||
|
final PackageManager packageManager = context.getPackageManager();
|
||||||
|
final String packageName = context.getPackageName();
|
||||||
|
for (String className : SettingsGateway.SETTINGS_FOR_RESTRICTED) {
|
||||||
|
final Intent intent = new Intent();
|
||||||
|
intent.setComponent(new ComponentName(packageName, className));
|
||||||
|
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,
|
||||||
|
PackageManager.MATCH_DISABLED_COMPONENTS);
|
||||||
|
Log.d(TAG, packageName + "/" + className + "; resolveInfo size: "
|
||||||
|
+ resolveInfos.size());
|
||||||
|
assertFalse(className + " is not-defined in manifest", resolveInfos.isEmpty());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user