Loading src/com/android/settings/location/LocationSettingsBase.java +16 −9 Original line number Diff line number Diff line Loading @@ -85,13 +85,23 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { /** Called when location mode has changed. */ public abstract void onModeChanged(int mode, boolean restricted); private boolean isRestricted() { final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); public static boolean isRestricted(Context context) { final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); return um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION); } public static boolean updateLocationMode(Context context, int oldMode, int newMode) { Intent intent = new Intent(MODE_CHANGING_ACTION); intent.putExtra(CURRENT_MODE_KEY, oldMode); intent.putExtra(NEW_MODE_KEY, newMode); context.sendBroadcast(intent, android.Manifest.permission.WRITE_SECURE_SETTINGS); return Settings.Secure.putInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE, newMode); } public void setLocationMode(int mode) { if (isRestricted()) { Context context = getActivity(); if (isRestricted(context)) { // Location toggling disabled by user restriction. Read the current location mode to // update the location master switch. if (Log.isLoggable(TAG, Log.INFO)) { Loading @@ -104,11 +114,8 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { } return; } Intent intent = new Intent(MODE_CHANGING_ACTION); intent.putExtra(CURRENT_MODE_KEY, mCurrentMode); intent.putExtra(NEW_MODE_KEY, mode); getActivity().sendBroadcast(intent, android.Manifest.permission.WRITE_SECURE_SETTINGS); Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCATION_MODE, mode); updateLocationMode(context, mCurrentMode, mode); refreshLocationMode(); } Loading @@ -120,7 +127,7 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { if (Log.isLoggable(TAG, Log.INFO)) { Log.i(TAG, "Location mode has been changed"); } onModeChanged(mode, isRestricted()); onModeChanged(mode, isRestricted(getActivity())); } } } src/com/android/settings/search/ResultPayload.java +9 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ public class ResultPayload implements Parcelable { Availability.DISABLED_DEPENDENT_APP, Availability.DISABLED_UNSUPPORTED, Availability.RESOURCE_CONTENTION, Availability.INTENT_ONLY}) Availability.INTENT_ONLY, Availability.DISABLED_FOR_USER,}) @Retention(RetentionPolicy.SOURCE) public @interface Availability { /** Loading @@ -96,7 +97,7 @@ public class ResultPayload implements Parcelable { int RESOURCE_CONTENTION = 3; /** * The setting is disabled because corresponding app is disabled * The setting is disabled because corresponding app is disabled. */ int DISABLED_DEPENDENT_APP = 4; Loading @@ -104,6 +105,12 @@ public class ResultPayload implements Parcelable { * This setting is supported on the device but cannot be changed inline. */ int INTENT_ONLY = 5; /** * The setting cannot be changed by the current user. * ex: MobileNetworkTakeMeThereSetting should not be available to a secondary user. */ int DISABLED_FOR_USER = 6; } @IntDef({SettingsSource.UNKNOWN, SettingsSource.SYSTEM, SettingsSource.SECURE, Loading Loading
src/com/android/settings/location/LocationSettingsBase.java +16 −9 Original line number Diff line number Diff line Loading @@ -85,13 +85,23 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { /** Called when location mode has changed. */ public abstract void onModeChanged(int mode, boolean restricted); private boolean isRestricted() { final UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE); public static boolean isRestricted(Context context) { final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); return um.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION); } public static boolean updateLocationMode(Context context, int oldMode, int newMode) { Intent intent = new Intent(MODE_CHANGING_ACTION); intent.putExtra(CURRENT_MODE_KEY, oldMode); intent.putExtra(NEW_MODE_KEY, newMode); context.sendBroadcast(intent, android.Manifest.permission.WRITE_SECURE_SETTINGS); return Settings.Secure.putInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE, newMode); } public void setLocationMode(int mode) { if (isRestricted()) { Context context = getActivity(); if (isRestricted(context)) { // Location toggling disabled by user restriction. Read the current location mode to // update the location master switch. if (Log.isLoggable(TAG, Log.INFO)) { Loading @@ -104,11 +114,8 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { } return; } Intent intent = new Intent(MODE_CHANGING_ACTION); intent.putExtra(CURRENT_MODE_KEY, mCurrentMode); intent.putExtra(NEW_MODE_KEY, mode); getActivity().sendBroadcast(intent, android.Manifest.permission.WRITE_SECURE_SETTINGS); Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCATION_MODE, mode); updateLocationMode(context, mCurrentMode, mode); refreshLocationMode(); } Loading @@ -120,7 +127,7 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment { if (Log.isLoggable(TAG, Log.INFO)) { Log.i(TAG, "Location mode has been changed"); } onModeChanged(mode, isRestricted()); onModeChanged(mode, isRestricted(getActivity())); } } }
src/com/android/settings/search/ResultPayload.java +9 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,8 @@ public class ResultPayload implements Parcelable { Availability.DISABLED_DEPENDENT_APP, Availability.DISABLED_UNSUPPORTED, Availability.RESOURCE_CONTENTION, Availability.INTENT_ONLY}) Availability.INTENT_ONLY, Availability.DISABLED_FOR_USER,}) @Retention(RetentionPolicy.SOURCE) public @interface Availability { /** Loading @@ -96,7 +97,7 @@ public class ResultPayload implements Parcelable { int RESOURCE_CONTENTION = 3; /** * The setting is disabled because corresponding app is disabled * The setting is disabled because corresponding app is disabled. */ int DISABLED_DEPENDENT_APP = 4; Loading @@ -104,6 +105,12 @@ public class ResultPayload implements Parcelable { * This setting is supported on the device but cannot be changed inline. */ int INTENT_ONLY = 5; /** * The setting cannot be changed by the current user. * ex: MobileNetworkTakeMeThereSetting should not be available to a secondary user. */ int DISABLED_FOR_USER = 6; } @IntDef({SettingsSource.UNKNOWN, SettingsSource.SYSTEM, SettingsSource.SECURE, Loading