Device-wide unknown sources block option for DPC.

This adds a new framework user restriction that can be used by the DPC
to block installs from unknown sources on all profiles of a device.

Test: Manual test, disallowing installs in TestDPC disables installing
unknown sources apps.
Bug: 111335021
Change-Id: Ib9fb672c5e5dea2ac63bf8cbd1b04484b12b4056
This commit is contained in:
Irina Dumitrescu
2018-09-05 14:08:33 +01:00
parent 5ed02df4df
commit 4638edd79f
8 changed files with 72 additions and 18 deletions

View File

@@ -7414,6 +7414,10 @@ public class DevicePolicyManager {
* If any app targeting {@link android.os.Build.VERSION_CODES#O} or higher calls this method
* with {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS},
* an {@link UnsupportedOperationException} is thrown.
*
* Starting from Android Q, the device and profile owner can also call
* {@link UserManager#DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY} to restrict unknown sources for
* all users.
* </strong>
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.

View File

@@ -256,6 +256,7 @@ public class UserManager {
/**
* Specifies if a user is disallowed from enabling the
* "Unknown Sources" setting, that allows installation of apps from unknown sources.
* Unknown sources exclude adb and special apps such as trusted app stores.
* The default value is <code>false</code>.
*
* <p>Key for user restrictions.
@@ -266,6 +267,22 @@ public class UserManager {
*/
public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES = "no_install_unknown_sources";
/**
* This restriction is a device-wide version of {@link DISALLOW_INSTALL_UNKNOWN_SOURCES}.
*
* Specifies if all users on the device are disallowed from enabling the
* "Unknown Sources" setting, that allows installation of apps from unknown sources.
* The default value is <code>false</code>.
*
* <p>Key for user restrictions.
* <p>Type: Boolean
* @see DevicePolicyManager#addUserRestriction(ComponentName, String)
* @see DevicePolicyManager#clearUserRestriction(ComponentName, String)
* @see #getUserRestrictions()
*/
public static final String DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY =
"no_install_unknown_sources_globally";
/**
* Specifies if a user is disallowed from configuring bluetooth.
* This does <em>not</em> restrict the user from turning bluetooth on or off.
@@ -1669,8 +1686,9 @@ public class UserManager {
/**
* @hide
* Returns whether the given user has been disallowed from performing certain actions
* or setting certain settings through UserManager. This method disregards restrictions
* set by device policy.
* or setting certain settings through UserManager (e.g. this type of restriction would prevent
* the guest user from doing certain things, such as making calls). This method disregards
* restrictions set by device policy.
* @param restrictionKey the string key representing the restriction
* @param userHandle the UserHandle of the user for whom to retrieve the restrictions.
*/