Setting WebView proxy on Android 4.4.4 -
i have code used work fine setting proxy programmatically on kitkat after 4.4.4 update appears not working. has else seen issue? there fix? have confirmed on different device 4.4.2 , still works there. thanks.
private static boolean setproxykk(webview webview, string host, int port, string applicationclassname) { log.d(log_tag, "setting proxy >= 4.4 api."); context appcontext = webview.getcontext().getapplicationcontext(); system.setproperty("http.proxyhost", host); system.setproperty("http.proxyport", port + ""); system.setproperty("https.proxyhost", host); system.setproperty("https.proxyport", port + ""); try { class applictioncls = class.forname(applicationclassname); field loadedapkfield = applictioncls.getfield("mloadedapk"); loadedapkfield.setaccessible(true); object loadedapk = loadedapkfield.get(appcontext); class loadedapkcls = class.forname("android.app.loadedapk"); field receiversfield = loadedapkcls.getdeclaredfield("mreceivers"); receiversfield.setaccessible(true); arraymap receivers = (arraymap) receiversfield.get(loadedapk); (object receivermap : receivers.values()) { (object rec : ((arraymap) receivermap).keyset()) { class clazz = rec.getclass(); if (clazz.getname().contains("proxychangelistener")) { method onreceivemethod = clazz.getdeclaredmethod("onreceive", context.class, intent.class); intent intent = new intent(proxy.proxy_change_action); /*********** optional, may need in future *************/ final string class_name = "android.net.proxyproperties"; class cls = class.forname(class_name); constructor constructor = cls.getconstructor(string.class, integer.type, string.class); constructor.setaccessible(true); object proxyproperties = constructor.newinstance(host, port, null); intent.putextra("proxy", (parcelable) proxyproperties); /*********** optional, may need in future *************/ onreceivemethod.invoke(rec, appcontext, intent); } } } log.d(log_tag, "setting proxy >= 4.4 api successful!"); return true; } catch (classnotfoundexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (nosuchfieldexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (illegalaccessexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (illegalargumentexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (nosuchmethodexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (invocationtargetexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } catch (instantiationexception e) { stringwriter sw = new stringwriter(); e.printstacktrace(new printwriter(sw)); string exceptionasstring = sw.tostring(); log.v(log_tag, e.getmessage()); log.v(log_tag, exceptionasstring); } return false; }
Comments
Post a Comment