Skip to content

Instantly share code, notes, and snippets.

@wutianlong
Last active June 2, 2016 09:13
Show Gist options
  • Save wutianlong/8808cee86e8e1aa0320436dd868e21b8 to your computer and use it in GitHub Desktop.
Save wutianlong/8808cee86e8e1aa0320436dd868e21b8 to your computer and use it in GitHub Desktop.
android webview 获取h5中数据,然后回调给android
内部类不能被混淆,否则h5页面内找不到android中类
-keep class com.sohu.tv.activity.IndividualH5Activity$*{*;}
webView.addJavascriptInterface(new HTMLHandler(), "handler");
webView.loadUrl(getJsOfFetchMeta());
class HTMLHandler {
// api17以上必须要加此注解,否则js无法回调到这里
@JavascriptInterface
public void receive(final String h5PicUrl, final String h5ShareUrl, final String h5Title, final String h5Desc) {
webView.post(new Runnable() {
@Override
public void run() {
LogManager.d(TAG, "sharePicUrl : " + h5PicUrl);
LogManager.d(TAG, "shareUrl : " + h5ShareUrl);
LogManager.d(TAG, "shareTitle : " + h5Title);
LogManager.d(TAG, "shareDesc : " + h5Desc);
}
});
}
}
public static String getJsOfFetchMeta() {
StringBuilder jsBuilder = new StringBuilder("javascript:");
jsBuilder.append("var picUrl, url, desc, title;");
jsBuilder.append("metas = window.parent.document.getElementsByTagName(\"meta\");");
jsBuilder.append("for(i=0;i<metas.length;i++) {");
jsBuilder.append(" if (metas[i].getAttribute(\"property\") == \"og:image\") { ");
jsBuilder.append(" picUrl = metas[i].getAttribute(\"content\");");
jsBuilder.append(" }");
jsBuilder.append(" else if (metas[i].getAttribute(\"property\") == \"og:url\") { ");
jsBuilder.append(" url = metas[i].getAttribute(\"content\");");
jsBuilder.append(" }");
jsBuilder.append(" else if (metas[i].getAttribute(\"property\") == \"og:title\") { ");
jsBuilder.append(" title = metas[i].getAttribute(\"content\");");
jsBuilder.append(" }");
jsBuilder.append(" if (metas[i].getAttribute(\"property\") == \"og:desc\") { ");
jsBuilder.append(" desc = metas[i].getAttribute(\"content\");");
jsBuilder.append(" }");
jsBuilder.append("}");
jsBuilder.append("handler.receive(picUrl, url, title, desc);");
LogManager.d("getJsOfFetchMeta", "jsBuilder = " + jsBuilder);
return jsBuilder.toString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment