Android三种Webview获取Javascript返回值/属性方式

jopen 10年前

1.通过反射(各版本API,不一样),如下为4.2.2源码的方式:通过android.webkit.WebViewClassic的fromWebView拿到webview对应的WebViewClassic实例1,通过该实例1的getWebViewCore方法拿到对应的WebViewCore实例2,通过实例2拿到 mBrowserFrame实例3,通过实例3的stringByEvaluatingJavaScriptFromString方法拿到js的属性或方法返回值。


2.通过setJavascriptInterface方式,暴漏webview中的对象到JS中(4.2之前android有系统漏洞问题),该对象不断的向webview推送JS的方法的返回值或属性值。


3.webview定义事先好捕获URL的格式;JS在执行完方法后通过发起伪HTTP链接(并不是真正HTTP,而是为了webview的onLoadResource方法能够捕获);webview在onLoadResource中去捕获这种伪HTTP,根据事先定义好的URL格式,去获得已定义好的JS方法的返回值或属性值