SensorsDataAPI.sharedInstance().showUpWebView(WebView webView, boolean isSupportJellyBean);
isSupportJellyBean: 是否支持API level 16及以下的版本。 因为API level 16及以下的版本, addJavascriptInterface有安全漏洞,请谨慎使用。
SensorsDataAPI.sharedInstance().showUpX5WebView(Object x5WebView);
1.4 在 mWebView.setWebViewClient
的 onPageFinished
方法中注入 JavaScript SDK 的代码:
// setJavaScriptEnabled 是必须的配置
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// 调用 showUpWebView 方法
SensorsDataAPI.sharedInstance().showUpWebView(mWebView,false);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//注入 JavaScript SDK 代码
injectSensorsDataJSSDK();
}
}
/**
* 注入方法
*/
private String JSResponse;
public void injectSensorsDataJSSDK() {
new Thread(new Runnable() {
ByteArrayOutputStream fromFile;
InputStream in;
@Override
public void run() {
try {
//获取保存好的 js 文件
in = getAssets().open("inject_js_sdk.js");
int dataBlock;
byte arr[] = new byte[1024];
fromFile = new ByteArrayOutputStream();
while ((dataBlock = in.read(arr)) != -1) {
fromFile.write(arr, 0, dataBlock);
}
JSResponse = fromFile.toString();
webView.post(new Runnable() {
@Override
public void run() {
webView.loadUrl("javascript:" + JSResponse);
}
});
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (fromFile != null) {
fromFile.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}