在 Android 9 及更高版本中,由于安全原因,应用程序默认情况下无法直接访问或保存代理信息。相反,Android 使用 ProxySelector
类来处理代理设置。您可以使用以下代码示例来设置代理:
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;
public class ProxyUtils {
public static void setProxy(String proxyHost, int proxyPort) {
ProxySelector.setDefault(new ProxySelector() {
@Override
public List select(URI uri) {
List proxies = new ArrayList<>();
proxies.add(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)));
return proxies;
}
@Override
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
// Handle connection failure here
}
});
}
public static void clearProxy() {
ProxySelector.setDefault(ProxySelector.getDefault());
}
}
上述代码中,setProxy()
方法设置了一个代理服务器,该代理服务器的主机名为 proxyHost
,端口号为 proxyPort
。clearProxy()
方法用于清除代理设置。
使用示例:
ProxyUtils.setProxy("proxy.example.com", 8080);
// 执行需要使用代理的网络请求
ProxyUtils.clearProxy();
请注意,上述代码仅适用于当前应用程序的网络请求,它不会影响整个设备的代理设置。