Merge "Add location sharing toggle user restriction." into jb-mr2-dev

This commit is contained in:
Maggie Benthall
2013-02-25 21:42:13 +00:00
committed by Android (Google) Code Review
4 changed files with 41 additions and 9 deletions

View File

@ -15,15 +15,15 @@
*/ */
package android.os; package android.os;
import com.android.internal.R;
import android.app.ActivityManagerNative; import android.app.ActivityManagerNative;
import android.content.Context; import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.graphics.Bitmap;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap;
import android.util.Log; import android.util.Log;
import com.android.internal.R;
import java.util.List; import java.util.List;
/** /**
@ -71,6 +71,14 @@ public class UserManager {
*/ */
public static final String ALLOW_UNINSTALL_APPS = "uninstall_apps"; public static final String ALLOW_UNINSTALL_APPS = "uninstall_apps";
/** @hide *
* Key for user restrictions. Specifies if a user is allowed to toggle location sharing.
* Type: Boolean
* @see #setUserRestrictions(Bundle)
* @see #getUserRestrictions()
*/
public static final String ALLOW_CONFIG_LOCATION_ACCESS = "config_location_access";
/** @hide */ /** @hide */
public UserManager(Context context, IUserManager service) { public UserManager(Context context, IUserManager service) {
mService = service; mService = service;
@ -90,7 +98,7 @@ public class UserManager {
* Returns the user handle for the user that this application is running for. * Returns the user handle for the user that this application is running for.
* @return the user handle of the user making this call. * @return the user handle of the user making this call.
* @hide * @hide
* */ */
public int getUserHandle() { public int getUserHandle() {
return UserHandle.myUserId(); return UserHandle.myUserId();
} }
@ -197,6 +205,13 @@ public class UserManager {
} }
} }
/** @hide */
public void setUserRestriction(String key, boolean value, UserHandle userHandle) {
Bundle bundle = getUserRestrictions(userHandle);
bundle.putBoolean(key, value);
setUserRestrictions(bundle, userHandle);
}
/** /**
* Return the serial number for a user. This is a device-unique * Return the serial number for a user. This is a device-unique
* number assigned to that user; if the user is deleted and then a new * number assigned to that user; if the user is deleted and then a new
@ -433,4 +448,12 @@ public class UserManager {
} }
return -1; return -1;
} }
/**
* Returns whether the current user is allow to toggle location sharing settings.
* @hide
*/
public boolean isLocationSharingToggleAllowed() {
return getUserRestrictions().getBoolean(ALLOW_CONFIG_LOCATION_ACCESS);
}
} }

View File

@ -16,8 +16,6 @@
package com.android.providers.settings; package com.android.providers.settings;
import java.util.Locale;
import android.app.ActivityManagerNative; import android.app.ActivityManagerNative;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.app.backup.IBackupManager; import android.app.backup.IBackupManager;
@ -28,9 +26,12 @@ import android.media.AudioManager;
import android.os.IPowerManager; import android.os.IPowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import java.util.Locale;
public class SettingsHelper { public class SettingsHelper {
private Context mContext; private Context mContext;
private AudioManager mAudioManager; private AudioManager mAudioManager;
@ -96,6 +97,10 @@ public class SettingsHelper {
} }
private void setGpsLocation(String value) { private void setGpsLocation(String value) {
UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
if (! um.isLocationSharingToggleAllowed()) {
return;
}
final String GPS = LocationManager.GPS_PROVIDER; final String GPS = LocationManager.GPS_PROVIDER;
boolean enabled = boolean enabled =
GPS.equals(value) || GPS.equals(value) ||

View File

@ -603,6 +603,7 @@ public class UserManagerService extends IUserManager.Stub {
writeBoolean(serializer, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS); writeBoolean(serializer, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS);
writeBoolean(serializer, restrictions, UserManager.ALLOW_INSTALL_APPS); writeBoolean(serializer, restrictions, UserManager.ALLOW_INSTALL_APPS);
writeBoolean(serializer, restrictions, UserManager.ALLOW_UNINSTALL_APPS); writeBoolean(serializer, restrictions, UserManager.ALLOW_UNINSTALL_APPS);
writeBoolean(serializer, restrictions, UserManager.ALLOW_CONFIG_LOCATION_ACCESS);
serializer.endTag(null, TAG_RESTRICTIONS); serializer.endTag(null, TAG_RESTRICTIONS);
} }
serializer.endTag(null, TAG_USER); serializer.endTag(null, TAG_USER);
@ -719,6 +720,7 @@ public class UserManagerService extends IUserManager.Stub {
readBoolean(parser, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS); readBoolean(parser, restrictions, UserManager.ALLOW_MODIFY_ACCOUNTS);
readBoolean(parser, restrictions, UserManager.ALLOW_INSTALL_APPS); readBoolean(parser, restrictions, UserManager.ALLOW_INSTALL_APPS);
readBoolean(parser, restrictions, UserManager.ALLOW_UNINSTALL_APPS); readBoolean(parser, restrictions, UserManager.ALLOW_UNINSTALL_APPS);
readBoolean(parser, restrictions, UserManager.ALLOW_CONFIG_LOCATION_ACCESS);
} }
} }
} }
@ -763,6 +765,7 @@ public class UserManagerService extends IUserManager.Stub {
restrictions.putBoolean(UserManager.ALLOW_MODIFY_ACCOUNTS, true); restrictions.putBoolean(UserManager.ALLOW_MODIFY_ACCOUNTS, true);
restrictions.putBoolean(UserManager.ALLOW_INSTALL_APPS, true); restrictions.putBoolean(UserManager.ALLOW_INSTALL_APPS, true);
restrictions.putBoolean(UserManager.ALLOW_UNINSTALL_APPS, true); restrictions.putBoolean(UserManager.ALLOW_UNINSTALL_APPS, true);
restrictions.putBoolean(UserManager.ALLOW_CONFIG_LOCATION_ACCESS, true);
} }
private int readIntAttribute(XmlPullParser parser, String attr, int defaultValue) { private int readIntAttribute(XmlPullParser parser, String attr, int defaultValue) {

View File

@ -22,8 +22,6 @@ import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.os.Bundle; import android.os.Bundle;
import android.os.Debug;
import android.os.Environment;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.test.AndroidTestCase; import android.test.AndroidTestCase;
@ -67,6 +65,9 @@ public class UserManagerTest extends AndroidTestCase {
&& !user.isAdmin() && !user.isAdmin()
&& !user.isPrimary()) { && !user.isPrimary()) {
found = true; found = true;
Bundle restrictions = mUserManager.getUserRestrictions(user.getUserHandle());
assertTrue("New user should have ALLOW_CONFIG_WIFI =true by default",
restrictions.getBoolean(UserManager.ALLOW_CONFIG_WIFI));
} }
} }
assertTrue(found); assertTrue(found);