Java 对于低于KitKat的Android版本,如何在Android WebView中重置代理?

Java 对于低于KitKat的Android版本,如何在Android WebView中重置代理?,java,android,reflection,webview,proxy,Java,Android,Reflection,Webview,Proxy,我使用以下两种方法在Android版本ICS和JB的Android WebView中设置代理。但我无法为这两个版本重置/删除此代理。如何重置/删除由这些方法设置的代理 对于ICS: private static boolean setProxyICS(WebView webview, String host, int port) { try { Class jwcjb = Class.forName("android.webkit.JWebCoreJava

我使用以下两种方法在Android版本ICS和JB的Android WebView中设置代理。但我无法为这两个版本重置/删除此代理。如何重置/删除由这些方法设置的代理

对于ICS:

private static boolean setProxyICS(WebView webview, String host, int port) {
        try {
            Class jwcjb = Class.forName("android.webkit.JWebCoreJavaBridge");

            Class params[] = new Class[1];
            params[0] = Class.forName("android.net.ProxyProperties");

            Method updateProxyInstance = jwcjb.getDeclaredMethod("updateProxy",
                    params);

            Class wv = Class.forName("android.webkit.WebView");

            Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");

            Object mWebViewCoreFieldInstance = getFieldValueSafely(
                    mWebViewCoreField, webview);

            Class wvc = Class.forName("android.webkit.WebViewCore");

            Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");

            Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField,
                    mWebViewCoreFieldInstance);

            Class bf = Class.forName("android.webkit.BrowserFrame");

            Field sJavaBridgeField = bf.getDeclaredField("sJavaBridge");

            Object sJavaBridge = getFieldValueSafely(sJavaBridgeField,
                    mBrowserFrame);

            Class ppclass = Class.forName("android.net.ProxyProperties");

            Class pparams[] = new Class[3];
            pparams[0] = String.class;
            pparams[1] = int.class;
            pparams[2] = String.class;

            Constructor ppcont = ppclass.getConstructor(pparams);

            updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance(host, port, null));

        } catch (Exception e) {
            return false;
        }
        return true;
    }
果冻豆:

private static boolean setProxyJB(WebView webview, String host, int port) {
        try {
            Class wvcClass = Class.forName("android.webkit.WebViewClassic");
            Class wvParams[] = new Class[1];
            wvParams[0] = Class.forName("android.webkit.WebView");
            Method fromWebView = wvcClass.getDeclaredMethod("fromWebView",
                    wvParams);
            Object webViewClassic = fromWebView.invoke(null, webview);

            Class wv = Class.forName("android.webkit.WebViewClassic");
            Field mWebViewCoreField = wv.getDeclaredField("mWebViewCore");
            Object mWebViewCoreFieldInstance = getFieldValueSafely(
                    mWebViewCoreField, webViewClassic);

            Class wvc = Class.forName("android.webkit.WebViewCore");
            Field mBrowserFrameField = wvc.getDeclaredField("mBrowserFrame");
            Object mBrowserFrame = getFieldValueSafely(mBrowserFrameField,
                    mWebViewCoreFieldInstance);

            Class bf = Class.forName("android.webkit.BrowserFrame");
            Field sJavaBridgeField = bf.getDeclaredField("sJavaBridge");
            Object sJavaBridge = getFieldValueSafely(sJavaBridgeField,
                    mBrowserFrame);

            Class ppclass = Class.forName("android.net.ProxyProperties");
            Class pparams[] = new Class[3];
            pparams[0] = String.class;
            pparams[1] = int.class;
            pparams[2] = String.class;
            Constructor ppcont = ppclass.getConstructor(pparams);

            Class jwcjb = Class.forName("android.webkit.JWebCoreJavaBridge");
            Class params[] = new Class[1];
            params[0] = Class.forName("android.net.ProxyProperties");
            Method updateProxyInstance = jwcjb.getDeclaredMethod("updateProxy", params);

            updateProxyInstance.invoke(sJavaBridge, ppcont.newInstance(host, port, null));
        } catch (Exception e) {
            return false;
        }
        return true;
    }