第三方 H5 页面嵌入 js(Android)
1.1 集成神策分析 Android SDK
1.2 初始化 WebView 后,调用showUpWebView():
showUpWebView(): SensorsDataAPI.sharedInstance().showUpWebView(WebView webView, boolean isSupportJellyBean); SensorsDataAPI.sharedInstance().showUpX5WebView(Object x5WebView);1.3 获取要插入的 JavaScript SDK 的代码,并保存为 js 文件到主 module 的 src/main/assets 目录下
module 的 src/main/assets 目录下1.4 在 mWebView.setWebViewClient 的 onPageFinished 方法中注入 JavaScript SDK 的代码:
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();
}Last updated
Was this helpful?
