Merge "Restrict Settings always-on to NYC+" into nyc-dev

This commit is contained in:
Robin Lee
2016-06-06 20:59:00 +00:00
committed by Android (Google) Code Review

View File

@@ -25,6 +25,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
@@ -158,7 +159,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
} }
private boolean onForgetVpnClick() { private boolean onForgetVpnClick() {
updateRestrictions(); updateRestrictedViews();
if (!mPreferenceForget.isEnabled()) { if (!mPreferenceForget.isEnabled()) {
return false; return false;
} }
@@ -178,7 +179,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
} }
private boolean setAlwaysOnVpnByUI(boolean isEnabled) { private boolean setAlwaysOnVpnByUI(boolean isEnabled) {
updateRestrictions(); updateRestrictedViews();
if (!mPreferenceAlwaysOn.isEnabled()) { if (!mPreferenceAlwaysOn.isEnabled()) {
return false; return false;
} }
@@ -194,19 +195,38 @@ public class AppManagementFragment extends SettingsPreferenceFragment
return success; return success;
} }
private boolean checkTargetVersion() {
if (mPackageInfo == null || mPackageInfo.applicationInfo == null) {
return true;
}
final int targetSdk = mPackageInfo.applicationInfo.targetSdkVersion;
if (targetSdk >= Build.VERSION_CODES.N) {
return true;
}
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "Package " + mPackageName + " targets SDK version " + targetSdk + "; must"
+ " target at least " + Build.VERSION_CODES.N + " to use always-on.");
}
return false;
}
private void updateUI() { private void updateUI() {
if (isAdded()) { if (isAdded()) {
mPreferenceAlwaysOn.setChecked(isVpnAlwaysOn()); mPreferenceAlwaysOn.setChecked(isVpnAlwaysOn());
updateRestrictions(); updateRestrictedViews();
} }
} }
private void updateRestrictions() { private void updateRestrictedViews() {
if (isAdded()) { if (isAdded()) {
mPreferenceAlwaysOn.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN, mPreferenceAlwaysOn.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN,
mUserId); mUserId);
mPreferenceForget.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN, mPreferenceForget.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_VPN,
mUserId); mUserId);
if (!checkTargetVersion()) {
mPreferenceAlwaysOn.setEnabled(false);
}
} }
} }