Merge "Update PrivateDnsMode from StringDef to IntDef"
This commit is contained in:
@@ -10,7 +10,6 @@ package android.net {
|
|||||||
method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshots();
|
method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshots();
|
||||||
method @Nullable public android.net.ProxyInfo getGlobalProxy();
|
method @Nullable public android.net.ProxyInfo getGlobalProxy();
|
||||||
method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
|
method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange();
|
||||||
method @NonNull public static String getPrivateDnsMode(@NonNull android.content.Context);
|
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerDefaultNetworkCallbackForUid(int, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerDefaultNetworkCallbackForUid(int, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void requestBackgroundNetwork(@NonNull android.net.NetworkRequest, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
|
||||||
@@ -20,7 +19,6 @@ package android.net {
|
|||||||
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void setAvoidUnvalidated(@NonNull android.net.Network);
|
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void setAvoidUnvalidated(@NonNull android.net.Network);
|
||||||
method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setGlobalProxy(@Nullable android.net.ProxyInfo);
|
method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setGlobalProxy(@Nullable android.net.ProxyInfo);
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void setLegacyLockdownVpnEnabled(boolean);
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void setLegacyLockdownVpnEnabled(boolean);
|
||||||
method public static void setPrivateDnsMode(@NonNull android.content.Context, @NonNull String);
|
|
||||||
method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setProfileNetworkPreference(@NonNull android.os.UserHandle, int, @Nullable java.util.concurrent.Executor, @Nullable Runnable);
|
method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void setProfileNetworkPreference(@NonNull android.os.UserHandle, int, @Nullable java.util.concurrent.Executor, @Nullable Runnable);
|
||||||
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void setRequireVpnForUids(boolean, @NonNull java.util.Collection<android.util.Range<java.lang.Integer>>);
|
method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void setRequireVpnForUids(boolean, @NonNull java.util.Collection<android.util.Range<java.lang.Integer>>);
|
||||||
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_TEST_NETWORKS, android.Manifest.permission.NETWORK_STACK}) public void simulateDataStall(int, long, @NonNull android.net.Network, @NonNull android.os.PersistableBundle);
|
||||||
@@ -40,9 +38,6 @@ package android.net {
|
|||||||
field public static final int BLOCKED_REASON_LOCKDOWN_VPN = 16; // 0x10
|
field public static final int BLOCKED_REASON_LOCKDOWN_VPN = 16; // 0x10
|
||||||
field public static final int BLOCKED_REASON_NONE = 0; // 0x0
|
field public static final int BLOCKED_REASON_NONE = 0; // 0x0
|
||||||
field public static final int BLOCKED_REASON_RESTRICTED_MODE = 8; // 0x8
|
field public static final int BLOCKED_REASON_RESTRICTED_MODE = 8; // 0x8
|
||||||
field public static final String PRIVATE_DNS_MODE_OFF = "off";
|
|
||||||
field public static final String PRIVATE_DNS_MODE_OPPORTUNISTIC = "opportunistic";
|
|
||||||
field public static final String PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = "hostname";
|
|
||||||
field public static final int PROFILE_NETWORK_PREFERENCE_DEFAULT = 0; // 0x0
|
field public static final int PROFILE_NETWORK_PREFERENCE_DEFAULT = 0; // 0x0
|
||||||
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE = 1; // 0x1
|
field public static final int PROFILE_NETWORK_PREFERENCE_ENTERPRISE = 1; // 0x1
|
||||||
}
|
}
|
||||||
@@ -69,6 +64,7 @@ package android.net {
|
|||||||
method @NonNull public static java.time.Duration getNetworkSwitchNotificationRateDuration(@NonNull android.content.Context, @NonNull java.time.Duration);
|
method @NonNull public static java.time.Duration getNetworkSwitchNotificationRateDuration(@NonNull android.content.Context, @NonNull java.time.Duration);
|
||||||
method @NonNull public static String getPrivateDnsDefaultMode(@NonNull android.content.Context);
|
method @NonNull public static String getPrivateDnsDefaultMode(@NonNull android.content.Context);
|
||||||
method @Nullable public static String getPrivateDnsHostname(@NonNull android.content.Context);
|
method @Nullable public static String getPrivateDnsHostname(@NonNull android.content.Context);
|
||||||
|
method public static int getPrivateDnsMode(@NonNull android.content.Context);
|
||||||
method public static boolean getWifiAlwaysRequested(@NonNull android.content.Context, boolean);
|
method public static boolean getWifiAlwaysRequested(@NonNull android.content.Context, boolean);
|
||||||
method @NonNull public static java.time.Duration getWifiDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
|
method @NonNull public static java.time.Duration getWifiDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
|
||||||
method public static void setCaptivePortalHttpUrl(@NonNull android.content.Context, @Nullable String);
|
method public static void setCaptivePortalHttpUrl(@NonNull android.content.Context, @Nullable String);
|
||||||
@@ -85,8 +81,9 @@ package android.net {
|
|||||||
method public static void setNetworkMeteredMultipathPreference(@NonNull android.content.Context, @NonNull String);
|
method public static void setNetworkMeteredMultipathPreference(@NonNull android.content.Context, @NonNull String);
|
||||||
method public static void setNetworkSwitchNotificationMaximumDailyCount(@NonNull android.content.Context, @IntRange(from=0) int);
|
method public static void setNetworkSwitchNotificationMaximumDailyCount(@NonNull android.content.Context, @IntRange(from=0) int);
|
||||||
method public static void setNetworkSwitchNotificationRateDuration(@NonNull android.content.Context, @NonNull java.time.Duration);
|
method public static void setNetworkSwitchNotificationRateDuration(@NonNull android.content.Context, @NonNull java.time.Duration);
|
||||||
method public static void setPrivateDnsDefaultMode(@NonNull android.content.Context, @NonNull String);
|
method public static void setPrivateDnsDefaultMode(@NonNull android.content.Context, @NonNull int);
|
||||||
method public static void setPrivateDnsHostname(@NonNull android.content.Context, @Nullable String);
|
method public static void setPrivateDnsHostname(@NonNull android.content.Context, @Nullable String);
|
||||||
|
method public static void setPrivateDnsMode(@NonNull android.content.Context, int);
|
||||||
method public static void setWifiAlwaysRequested(@NonNull android.content.Context, boolean);
|
method public static void setWifiAlwaysRequested(@NonNull android.content.Context, boolean);
|
||||||
method public static void setWifiDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
|
method public static void setWifiDataActivityTimeout(@NonNull android.content.Context, @NonNull java.time.Duration);
|
||||||
field public static final int CAPTIVE_PORTAL_MODE_AVOID = 2; // 0x2
|
field public static final int CAPTIVE_PORTAL_MODE_AVOID = 2; // 0x2
|
||||||
@@ -95,6 +92,9 @@ package android.net {
|
|||||||
field public static final int NETWORK_AVOID_BAD_WIFI_AVOID = 2; // 0x2
|
field public static final int NETWORK_AVOID_BAD_WIFI_AVOID = 2; // 0x2
|
||||||
field public static final int NETWORK_AVOID_BAD_WIFI_IGNORE = 0; // 0x0
|
field public static final int NETWORK_AVOID_BAD_WIFI_IGNORE = 0; // 0x0
|
||||||
field public static final int NETWORK_AVOID_BAD_WIFI_PROMPT = 1; // 0x1
|
field public static final int NETWORK_AVOID_BAD_WIFI_PROMPT = 1; // 0x1
|
||||||
|
field public static final int PRIVATE_DNS_MODE_OFF = 1; // 0x1
|
||||||
|
field public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2; // 0x2
|
||||||
|
field public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3; // 0x3
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class NetworkAgentConfig implements android.os.Parcelable {
|
public final class NetworkAgentConfig implements android.os.Parcelable {
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
package android.net;
|
package android.net;
|
||||||
|
|
||||||
import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
|
import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
|
||||||
import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_DEFAULT_MODE;
|
|
||||||
import static android.net.ConnectivitySettingsManager.PRIVATE_DNS_MODE;
|
|
||||||
import static android.net.NetworkRequest.Type.BACKGROUND_REQUEST;
|
import static android.net.NetworkRequest.Type.BACKGROUND_REQUEST;
|
||||||
import static android.net.NetworkRequest.Type.LISTEN;
|
import static android.net.NetworkRequest.Type.LISTEN;
|
||||||
import static android.net.NetworkRequest.Type.LISTEN_FOR_BEST;
|
import static android.net.NetworkRequest.Type.LISTEN_FOR_BEST;
|
||||||
@@ -33,7 +31,6 @@ import android.annotation.Nullable;
|
|||||||
import android.annotation.RequiresPermission;
|
import android.annotation.RequiresPermission;
|
||||||
import android.annotation.SdkConstant;
|
import android.annotation.SdkConstant;
|
||||||
import android.annotation.SdkConstant.SdkConstantType;
|
import android.annotation.SdkConstant.SdkConstantType;
|
||||||
import android.annotation.StringDef;
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
import android.annotation.SystemService;
|
import android.annotation.SystemService;
|
||||||
@@ -41,7 +38,6 @@ import android.app.PendingIntent;
|
|||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.compat.annotation.UnsupportedAppUsage;
|
import android.compat.annotation.UnsupportedAppUsage;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.ContentResolver;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.ConnectivityDiagnosticsManager.DataStallReport.DetectionMethod;
|
import android.net.ConnectivityDiagnosticsManager.DataStallReport.DetectionMethod;
|
||||||
@@ -70,7 +66,6 @@ import android.os.UserHandle;
|
|||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Range;
|
import android.util.Range;
|
||||||
@@ -820,38 +815,6 @@ public class ConnectivityManager {
|
|||||||
*/
|
*/
|
||||||
public static final int NETID_UNSET = 0;
|
public static final int NETID_UNSET = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Private DNS Mode values.
|
|
||||||
*
|
|
||||||
* The "private_dns_mode" global setting stores a String value which is
|
|
||||||
* expected to be one of the following.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
|
||||||
public static final String PRIVATE_DNS_MODE_OFF = "off";
|
|
||||||
/**
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
|
||||||
public static final String PRIVATE_DNS_MODE_OPPORTUNISTIC = "opportunistic";
|
|
||||||
/**
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
|
||||||
public static final String PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = "hostname";
|
|
||||||
|
|
||||||
/** @hide */
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
|
||||||
@StringDef(value = {
|
|
||||||
PRIVATE_DNS_MODE_OFF,
|
|
||||||
PRIVATE_DNS_MODE_OPPORTUNISTIC,
|
|
||||||
PRIVATE_DNS_MODE_PROVIDER_HOSTNAME,
|
|
||||||
})
|
|
||||||
public @interface PrivateDnsMode {}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flag to indicate that an app is not subject to any restrictions that could result in its
|
* Flag to indicate that an app is not subject to any restrictions that could result in its
|
||||||
* network access blocked.
|
* network access blocked.
|
||||||
@@ -5448,44 +5411,4 @@ public class ConnectivityManager {
|
|||||||
public static Range<Integer> getIpSecNetIdRange() {
|
public static Range<Integer> getIpSecNetIdRange() {
|
||||||
return new Range(TUN_INTF_NETID_START, TUN_INTF_NETID_START + TUN_INTF_NETID_RANGE - 1);
|
return new Range(TUN_INTF_NETID_START, TUN_INTF_NETID_START + TUN_INTF_NETID_RANGE - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get private DNS mode from settings.
|
|
||||||
*
|
|
||||||
* @param context The Context to query the private DNS mode from settings.
|
|
||||||
* @return A string of private DNS mode as one of the PRIVATE_DNS_MODE_* constants.
|
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
|
||||||
@NonNull
|
|
||||||
@PrivateDnsMode
|
|
||||||
public static String getPrivateDnsMode(@NonNull Context context) {
|
|
||||||
final ContentResolver cr = context.getContentResolver();
|
|
||||||
String mode = Settings.Global.getString(cr, PRIVATE_DNS_MODE);
|
|
||||||
if (TextUtils.isEmpty(mode)) mode = Settings.Global.getString(cr, PRIVATE_DNS_DEFAULT_MODE);
|
|
||||||
// If both PRIVATE_DNS_MODE and PRIVATE_DNS_DEFAULT_MODE are not set, choose
|
|
||||||
// PRIVATE_DNS_MODE_OPPORTUNISTIC as default mode.
|
|
||||||
if (TextUtils.isEmpty(mode)) mode = PRIVATE_DNS_MODE_OPPORTUNISTIC;
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set private DNS mode to settings.
|
|
||||||
*
|
|
||||||
* @param context The {@link Context} to set the private DNS mode.
|
|
||||||
* @param mode The private dns mode. This should be one of the PRIVATE_DNS_MODE_* constants.
|
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
|
||||||
@SystemApi(client = MODULE_LIBRARIES)
|
|
||||||
public static void setPrivateDnsMode(@NonNull Context context,
|
|
||||||
@NonNull @PrivateDnsMode String mode) {
|
|
||||||
if (!(mode == PRIVATE_DNS_MODE_OFF
|
|
||||||
|| mode == PRIVATE_DNS_MODE_OPPORTUNISTIC
|
|
||||||
|| mode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
|
|
||||||
throw new IllegalArgumentException("Invalid private dns mode");
|
|
||||||
}
|
|
||||||
Settings.Global.putString(context.getContentResolver(), PRIVATE_DNS_MODE, mode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,18 +19,15 @@ package android.net;
|
|||||||
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER;
|
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_HANDOVER;
|
||||||
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE;
|
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_PERFORMANCE;
|
||||||
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY;
|
import static android.net.ConnectivityManager.MULTIPATH_PREFERENCE_RELIABILITY;
|
||||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF;
|
|
||||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OPPORTUNISTIC;
|
|
||||||
import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
|
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
import android.annotation.IntRange;
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.SystemApi;
|
import android.annotation.SystemApi;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager.MultipathPreference;
|
import android.net.ConnectivityManager.MultipathPreference;
|
||||||
import android.net.ConnectivityManager.PrivateDnsMode;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Range;
|
import android.util.Range;
|
||||||
@@ -340,6 +337,37 @@ public class ConnectivitySettingsManager {
|
|||||||
*/
|
*/
|
||||||
public static final String MOBILE_DATA_PREFERRED_APPS = "mobile_data_preferred_apps";
|
public static final String MOBILE_DATA_PREFERRED_APPS = "mobile_data_preferred_apps";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One of the private DNS modes that indicates the private DNS mode is off.
|
||||||
|
*/
|
||||||
|
public static final int PRIVATE_DNS_MODE_OFF = 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One of the private DNS modes that indicates the private DNS mode is automatic, which
|
||||||
|
* will try to use the current DNS as private DNS.
|
||||||
|
*/
|
||||||
|
public static final int PRIVATE_DNS_MODE_OPPORTUNISTIC = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One of the private DNS modes that indicates the private DNS mode is strict and the
|
||||||
|
* {@link #PRIVATE_DNS_SPECIFIER} is required, which will try to use the value of
|
||||||
|
* {@link #PRIVATE_DNS_SPECIFIER} as private DNS.
|
||||||
|
*/
|
||||||
|
public static final int PRIVATE_DNS_MODE_PROVIDER_HOSTNAME = 3;
|
||||||
|
|
||||||
|
/** @hide */
|
||||||
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
@IntDef(value = {
|
||||||
|
PRIVATE_DNS_MODE_OFF,
|
||||||
|
PRIVATE_DNS_MODE_OPPORTUNISTIC,
|
||||||
|
PRIVATE_DNS_MODE_PROVIDER_HOSTNAME,
|
||||||
|
})
|
||||||
|
public @interface PrivateDnsMode {}
|
||||||
|
|
||||||
|
private static final String PRIVATE_DNS_MODE_OFF_STRING = "off";
|
||||||
|
private static final String PRIVATE_DNS_MODE_OPPORTUNISTIC_STRING = "opportunistic";
|
||||||
|
private static final String PRIVATE_DNS_MODE_PROVIDER_HOSTNAME_STRING = "hostname";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get mobile data activity timeout from {@link Settings}.
|
* Get mobile data activity timeout from {@link Settings}.
|
||||||
*
|
*
|
||||||
@@ -689,6 +717,65 @@ public class ConnectivitySettingsManager {
|
|||||||
context.getContentResolver(), GLOBAL_HTTP_PROXY_PAC, "" /* value */);
|
context.getContentResolver(), GLOBAL_HTTP_PROXY_PAC, "" /* value */);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String getPrivateDnsModeAsString(@PrivateDnsMode int mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case PRIVATE_DNS_MODE_OFF:
|
||||||
|
return PRIVATE_DNS_MODE_OFF_STRING;
|
||||||
|
case PRIVATE_DNS_MODE_OPPORTUNISTIC:
|
||||||
|
return PRIVATE_DNS_MODE_OPPORTUNISTIC_STRING;
|
||||||
|
case PRIVATE_DNS_MODE_PROVIDER_HOSTNAME:
|
||||||
|
return PRIVATE_DNS_MODE_PROVIDER_HOSTNAME_STRING;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid private dns mode: " + mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int getPrivateDnsModeAsInt(String mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case "off":
|
||||||
|
return PRIVATE_DNS_MODE_OFF;
|
||||||
|
case "hostname":
|
||||||
|
return PRIVATE_DNS_MODE_PROVIDER_HOSTNAME;
|
||||||
|
case "opportunistic":
|
||||||
|
return PRIVATE_DNS_MODE_OPPORTUNISTIC;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Invalid private dns mode: " + mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get private DNS mode from settings.
|
||||||
|
*
|
||||||
|
* @param context The Context to query the private DNS mode from settings.
|
||||||
|
* @return A string of private DNS mode.
|
||||||
|
*/
|
||||||
|
@PrivateDnsMode
|
||||||
|
public static int getPrivateDnsMode(@NonNull Context context) {
|
||||||
|
final ContentResolver cr = context.getContentResolver();
|
||||||
|
String mode = Settings.Global.getString(cr, PRIVATE_DNS_MODE);
|
||||||
|
if (TextUtils.isEmpty(mode)) mode = Settings.Global.getString(cr, PRIVATE_DNS_DEFAULT_MODE);
|
||||||
|
// If both PRIVATE_DNS_MODE and PRIVATE_DNS_DEFAULT_MODE are not set, choose
|
||||||
|
// PRIVATE_DNS_MODE_OPPORTUNISTIC as default mode.
|
||||||
|
if (TextUtils.isEmpty(mode)) return PRIVATE_DNS_MODE_OPPORTUNISTIC;
|
||||||
|
return getPrivateDnsModeAsInt(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set private DNS mode to settings.
|
||||||
|
*
|
||||||
|
* @param context The {@link Context} to set the private DNS mode.
|
||||||
|
* @param mode The private dns mode. This should be one of the PRIVATE_DNS_MODE_* constants.
|
||||||
|
*/
|
||||||
|
public static void setPrivateDnsMode(@NonNull Context context, @PrivateDnsMode int mode) {
|
||||||
|
if (!(mode == PRIVATE_DNS_MODE_OFF
|
||||||
|
|| mode == PRIVATE_DNS_MODE_OPPORTUNISTIC
|
||||||
|
|| mode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
|
||||||
|
throw new IllegalArgumentException("Invalid private dns mode: " + mode);
|
||||||
|
}
|
||||||
|
Settings.Global.putString(context.getContentResolver(), PRIVATE_DNS_MODE,
|
||||||
|
getPrivateDnsModeAsString(mode));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get specific private dns provider name from {@link Settings}.
|
* Get specific private dns provider name from {@link Settings}.
|
||||||
*
|
*
|
||||||
@@ -731,13 +818,14 @@ public class ConnectivitySettingsManager {
|
|||||||
* constants.
|
* constants.
|
||||||
*/
|
*/
|
||||||
public static void setPrivateDnsDefaultMode(@NonNull Context context,
|
public static void setPrivateDnsDefaultMode(@NonNull Context context,
|
||||||
@NonNull @PrivateDnsMode String mode) {
|
@NonNull @PrivateDnsMode int mode) {
|
||||||
if (!(mode == PRIVATE_DNS_MODE_OFF
|
if (!(mode == PRIVATE_DNS_MODE_OFF
|
||||||
|| mode == PRIVATE_DNS_MODE_OPPORTUNISTIC
|
|| mode == PRIVATE_DNS_MODE_OPPORTUNISTIC
|
||||||
|| mode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
|
|| mode == PRIVATE_DNS_MODE_PROVIDER_HOSTNAME)) {
|
||||||
throw new IllegalArgumentException("Invalid private dns mode");
|
throw new IllegalArgumentException("Invalid private dns mode");
|
||||||
}
|
}
|
||||||
Settings.Global.putString(context.getContentResolver(), PRIVATE_DNS_DEFAULT_MODE, mode);
|
Settings.Global.putString(context.getContentResolver(), PRIVATE_DNS_DEFAULT_MODE,
|
||||||
|
getPrivateDnsModeAsString(mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user