Last active
June 2, 2016 09:13
-
-
Save wutianlong/8808cee86e8e1aa0320436dd868e21b8 to your computer and use it in GitHub Desktop.
android webview 获取h5中数据,然后回调给android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
内部类不能被混淆,否则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