The Android Developer Challenge is back! Submit your idea before December 2.

ProxyController

abstract class ProxyController
kotlin.Any
   ↳ androidx.webkit.ProxyController

Manages setting and clearing a process-specific override for the Android system-wide proxy settings that govern network requests made by android.webkit.WebView.

WebView may make network requests in order to fetch content that is not otherwise read from the file system or provided directly by application code. In this case by default the system-wide Android network proxy settings are used to redirect requests to appropriate proxy servers.

In the rare case that it is necessary for an application to explicitly specify its proxy configuration, this API may be used to explicitly specify the proxy rules that govern WebView initiated network requests.

Example usage:

ProxyConfig proxyConfig = new ProxyConfig.Builder().addProxyRule("myproxy.com")
                                                     .addBypassRule("www.excluded.*")
                                                     .build();
  Executor executor = ...
  Runnable listener = ...
  ProxyController.getInstance().setProxyOverride(proxyConfig, executor, listener);
  ...
  ProxyController.getInstance().clearProxyOverride(executor, listener);
  

Summary

Public methods

abstract Unit
clearProxyOverride(@NonNull executor: Executor, @NonNull listener: Runnable)

Clears the proxy settings.

open static ProxyController

Returns the ProxyController instance.

abstract Unit
setProxyOverride(@NonNull proxyConfig: ProxyConfig, @NonNull executor: Executor, @NonNull listener: Runnable)

Sets ProxyConfig which will be used by all WebViews in the app.

Public methods

clearProxyOverride

abstract fun clearProxyOverride(@NonNull executor: Executor, @NonNull listener: Runnable): Unit

Clears the proxy settings. Network connections are not guaranteed to immediately use the new proxy setting; wait for the listener before loading a page. This listener will be called in the provided executor.

Parameters
executor Executor: Executor for the listener to be executed in
listener Executor: Listener called when the proxy setting change has been applied

getInstance

@NonNull open static fun getInstance(): ProxyController

Returns the ProxyController instance.

This method should only be called if WebViewFeature#isFeatureSupported(String) returns true for WebViewFeature#PROXY_OVERRIDE.

setProxyOverride

abstract fun setProxyOverride(@NonNull proxyConfig: ProxyConfig, @NonNull executor: Executor, @NonNull listener: Runnable): Unit

Sets ProxyConfig which will be used by all WebViews in the app. URLs that match patterns in the bypass list will not be directed to any proxy. Instead, the request will be made directly to the origin specified by the URL. Network connections are not guaranteed to immediately use the new proxy setting; wait for the listener before loading a page. This listener will be called in the provided executor.

Note: calling setProxyOverride will cause any existing system wide setting to be ignored.

Parameters
proxyConfig ProxyConfig: Proxy config to be applied
executor ProxyConfig: Executor for the listener to be executed in
listener ProxyConfig: Listener called when the proxy setting change has been applied
Exceptions
IllegalArgumentException If the proxyConfig is invalid