Deprecating secure setting install_non_market_apps
Apps targetting Android O or higher should use the new api
canRequestPackageInstalls in package manager. The secure setting
INSTALL_NON_MARKET_APPS which was used is set to 1 to make the
change transparent to apps who are already querying for this setting's
value.
Test: adb shell am instrument -e class\
'com.android.providers.settings.InstallNonMarketAppsDeprecationTest' -w\
'com.android.providers.setting.test/android.support.test.runner.AndroidJUnitRunner'
Bug: 33947615
Change-Id: Ie38d130bfccd022483a566270fce071acbdb00b7
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 8be9243..2299794 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -2735,7 +2735,7 @@
}
private final class UpgradeController {
- private static final int SETTINGS_VERSION = 137;
+ private static final int SETTINGS_VERSION = 138;
private final int mUserId;
@@ -3187,6 +3187,18 @@
currentVersion = 137;
}
+ if (currentVersion == 137) {
+ // Version 138: Settings.Secure#INSTALL_NON_MARKET_APPS is deprecated and its
+ // default value set to 1. The user can no longer change the value of this
+ // setting through the UI.
+ final SettingsState secureSetting = getSecureSettingsLocked(userId);
+ if (!mUserManager.hasUserRestriction(
+ UserManager.DISALLOW_INSTALL_UNKNOWN_SOURCES, UserHandle.of(userId))) {
+ secureSetting.insertSettingLocked(Settings.Secure.INSTALL_NON_MARKET_APPS,
+ "1", null, true, SettingsState.SYSTEM_PACKAGE_NAME);
+ }
+ currentVersion = 138;
+ }
if (currentVersion != newVersion) {
Slog.wtf("SettingsProvider", "warning: upgrading settings database to version "