* commit 'b39fb08b6274559140617e1e1ed615cd18500476': Allow DO/PO to go back to normal permission state.
This commit is contained in:
@@ -5773,7 +5773,7 @@ package android.app.admin {
|
|||||||
method public void setPasswordMinimumSymbols(android.content.ComponentName, int);
|
method public void setPasswordMinimumSymbols(android.content.ComponentName, int);
|
||||||
method public void setPasswordMinimumUpperCase(android.content.ComponentName, int);
|
method public void setPasswordMinimumUpperCase(android.content.ComponentName, int);
|
||||||
method public void setPasswordQuality(android.content.ComponentName, int);
|
method public void setPasswordQuality(android.content.ComponentName, int);
|
||||||
method public boolean setPermissionGranted(android.content.ComponentName, java.lang.String, java.lang.String, boolean);
|
method public boolean setPermissionGrantState(android.content.ComponentName, java.lang.String, java.lang.String, int);
|
||||||
method public void setPermissionPolicy(android.content.ComponentName, int);
|
method public void setPermissionPolicy(android.content.ComponentName, int);
|
||||||
method public boolean setPermittedAccessibilityServices(android.content.ComponentName, java.util.List<java.lang.String>);
|
method public boolean setPermittedAccessibilityServices(android.content.ComponentName, java.util.List<java.lang.String>);
|
||||||
method public boolean setPermittedInputMethods(android.content.ComponentName, java.util.List<java.lang.String>);
|
method public boolean setPermittedInputMethods(android.content.ComponentName, java.util.List<java.lang.String>);
|
||||||
@@ -5862,6 +5862,9 @@ package android.app.admin {
|
|||||||
field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
|
field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
|
||||||
field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
|
field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
|
||||||
field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
|
field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_DEFAULT = 0; // 0x0
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_DENIED = 2; // 0x2
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_GRANTED = 1; // 0x1
|
||||||
field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
|
field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
|
||||||
field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
|
field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
|
||||||
field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
|
field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
|
||||||
|
|||||||
@@ -5882,7 +5882,7 @@ package android.app.admin {
|
|||||||
method public void setPasswordMinimumSymbols(android.content.ComponentName, int);
|
method public void setPasswordMinimumSymbols(android.content.ComponentName, int);
|
||||||
method public void setPasswordMinimumUpperCase(android.content.ComponentName, int);
|
method public void setPasswordMinimumUpperCase(android.content.ComponentName, int);
|
||||||
method public void setPasswordQuality(android.content.ComponentName, int);
|
method public void setPasswordQuality(android.content.ComponentName, int);
|
||||||
method public boolean setPermissionGranted(android.content.ComponentName, java.lang.String, java.lang.String, boolean);
|
method public boolean setPermissionGrantState(android.content.ComponentName, java.lang.String, java.lang.String, int);
|
||||||
method public void setPermissionPolicy(android.content.ComponentName, int);
|
method public void setPermissionPolicy(android.content.ComponentName, int);
|
||||||
method public boolean setPermittedAccessibilityServices(android.content.ComponentName, java.util.List<java.lang.String>);
|
method public boolean setPermittedAccessibilityServices(android.content.ComponentName, java.util.List<java.lang.String>);
|
||||||
method public boolean setPermittedInputMethods(android.content.ComponentName, java.util.List<java.lang.String>);
|
method public boolean setPermittedInputMethods(android.content.ComponentName, java.util.List<java.lang.String>);
|
||||||
@@ -5976,6 +5976,9 @@ package android.app.admin {
|
|||||||
field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
|
field public static final int PASSWORD_QUALITY_NUMERIC_COMPLEX = 196608; // 0x30000
|
||||||
field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
|
field public static final int PASSWORD_QUALITY_SOMETHING = 65536; // 0x10000
|
||||||
field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
|
field public static final int PASSWORD_QUALITY_UNSPECIFIED = 0; // 0x0
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_DEFAULT = 0; // 0x0
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_DENIED = 2; // 0x2
|
||||||
|
field public static final int PERMISSION_GRANT_STATE_GRANTED = 1; // 0x1
|
||||||
field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
|
field public static final int PERMISSION_POLICY_AUTO_DENY = 2; // 0x2
|
||||||
field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
|
field public static final int PERMISSION_POLICY_AUTO_GRANT = 1; // 0x1
|
||||||
field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
|
field public static final int PERMISSION_POLICY_PROMPT = 0; // 0x0
|
||||||
|
|||||||
@@ -825,6 +825,23 @@ public class DevicePolicyManager {
|
|||||||
*/
|
*/
|
||||||
public static final int PERMISSION_POLICY_AUTO_DENY = 2;
|
public static final int PERMISSION_POLICY_AUTO_DENY = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runtime permission state: The user can manage the permission
|
||||||
|
* through the UI.
|
||||||
|
*/
|
||||||
|
public static final int PERMISSION_GRANT_STATE_DEFAULT = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runtime permission state: The permission is granted to the app
|
||||||
|
* and the user cannot manage the permission through the UI.
|
||||||
|
*/
|
||||||
|
public static final int PERMISSION_GRANT_STATE_GRANTED = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runtime permission state: The permission is denied to the app
|
||||||
|
* and the user cannot manage the permission through the UI.
|
||||||
|
*/
|
||||||
|
public static final int PERMISSION_GRANT_STATE_DENIED = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return true if the given administrator component is currently
|
* Return true if the given administrator component is currently
|
||||||
@@ -4401,21 +4418,31 @@ public class DevicePolicyManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grants or revokes a runtime permission to a specific application so that the user
|
* Sets the grant state of a runtime permission for a specific application. The state
|
||||||
* does not have to be prompted. This might affect all permissions in a group that the
|
* can be {@link #PERMISSION_GRANT_STATE_DEFAULT default} in which a user can manage it
|
||||||
* runtime permission belongs to. This method can only be called by a profile or device
|
* through the UI, {@link #PERMISSION_GRANT_STATE_DENIED denied}, in which the permission
|
||||||
* owner.
|
* is denied and the user cannot manage it through the UI, and {@link
|
||||||
|
* #PERMISSION_GRANT_STATE_GRANTED granted} in which the permission is granted and the
|
||||||
|
* user cannot manage it through the UI. This might affect all permissions in a
|
||||||
|
* group that the runtime permission belongs to. This method can only be called
|
||||||
|
* by a profile or device owner.
|
||||||
|
*
|
||||||
* @param admin Which profile or device owner this request is associated with.
|
* @param admin Which profile or device owner this request is associated with.
|
||||||
* @param packageName The application to grant or revoke a permission to.
|
* @param packageName The application to grant or revoke a permission to.
|
||||||
* @param permission The permission to grant or revoke.
|
* @param permission The permission to grant or revoke.
|
||||||
* @param granted Whether or not to grant the permission. If false, all permissions in the
|
* @param grantState The permission grant state which is one of {@link
|
||||||
* associated permission group will be denied.
|
* #PERMISSION_GRANT_STATE_DENIED}, {@link #PERMISSION_GRANT_STATE_DEFAULT},
|
||||||
* @return whether the permission was successfully granted or revoked
|
* {@link #PERMISSION_GRANT_STATE_GRANTED},
|
||||||
|
* @return whether the permission was successfully granted or revoked.
|
||||||
|
*
|
||||||
|
* @see #PERMISSION_GRANT_STATE_DENIED
|
||||||
|
* @see #PERMISSION_GRANT_STATE_DEFAULT
|
||||||
|
* @see #PERMISSION_GRANT_STATE_GRANTED
|
||||||
*/
|
*/
|
||||||
public boolean setPermissionGranted(ComponentName admin, String packageName,
|
public boolean setPermissionGrantState(ComponentName admin, String packageName,
|
||||||
String permission, boolean granted) {
|
String permission, int grantState) {
|
||||||
try {
|
try {
|
||||||
return mService.setPermissionGranted(admin, packageName, permission, granted);
|
return mService.setPermissionGrantState(admin, packageName, permission, grantState);
|
||||||
} catch (RemoteException re) {
|
} catch (RemoteException re) {
|
||||||
Log.w(TAG, "Failed talking with device policy service", re);
|
Log.w(TAG, "Failed talking with device policy service", re);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -234,6 +234,6 @@ interface IDevicePolicyManager {
|
|||||||
|
|
||||||
void setPermissionPolicy(in ComponentName admin, int policy);
|
void setPermissionPolicy(in ComponentName admin, int policy);
|
||||||
int getPermissionPolicy(in ComponentName admin);
|
int getPermissionPolicy(in ComponentName admin);
|
||||||
boolean setPermissionGranted(in ComponentName admin, String packageName, String permission,
|
boolean setPermissionGrantState(in ComponentName admin, String packageName,
|
||||||
boolean granted);
|
String permission, int grantState);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6392,25 +6392,34 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setPermissionGranted(ComponentName admin, String packageName,
|
public boolean setPermissionGrantState(ComponentName admin, String packageName,
|
||||||
String permission, boolean granted) throws RemoteException {
|
String permission, int grantState) throws RemoteException {
|
||||||
UserHandle user = Binder.getCallingUserHandle();
|
UserHandle user = Binder.getCallingUserHandle();
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
|
getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
|
||||||
long ident = Binder.clearCallingIdentity();
|
long ident = Binder.clearCallingIdentity();
|
||||||
try {
|
try {
|
||||||
PackageManager packageManager = mContext.getPackageManager();
|
PackageManager packageManager = mContext.getPackageManager();
|
||||||
if (granted) {
|
switch (grantState) {
|
||||||
packageManager.grantRuntimePermission(packageName, permission, user);
|
case DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED: {
|
||||||
packageManager.updatePermissionFlags(permission, packageName,
|
packageManager.grantRuntimePermission(packageName, permission, user);
|
||||||
PackageManager.FLAG_PERMISSION_POLICY_FIXED,
|
packageManager.updatePermissionFlags(permission, packageName,
|
||||||
PackageManager.FLAG_PERMISSION_POLICY_FIXED, user);
|
PackageManager.FLAG_PERMISSION_POLICY_FIXED,
|
||||||
} else {
|
PackageManager.FLAG_PERMISSION_POLICY_FIXED, user);
|
||||||
packageManager.revokeRuntimePermission(packageName,
|
} break;
|
||||||
permission, user);
|
|
||||||
packageManager.updatePermissionFlags(permission, packageName,
|
case DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED: {
|
||||||
PackageManager.FLAG_PERMISSION_POLICY_FIXED,
|
packageManager.revokeRuntimePermission(packageName,
|
||||||
PackageManager.FLAG_PERMISSION_POLICY_FIXED, user);
|
permission, user);
|
||||||
|
packageManager.updatePermissionFlags(permission, packageName,
|
||||||
|
PackageManager.FLAG_PERMISSION_POLICY_FIXED,
|
||||||
|
PackageManager.FLAG_PERMISSION_POLICY_FIXED, user);
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT: {
|
||||||
|
packageManager.updatePermissionFlags(permission, packageName,
|
||||||
|
PackageManager.FLAG_PERMISSION_POLICY_FIXED, 0, user);
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
} catch (SecurityException se) {
|
} catch (SecurityException se) {
|
||||||
|
|||||||
Reference in New Issue
Block a user