Android
1. 构建用于交互的对象
TestObject
public static class TestObject {
private final WeakReference<Activity> wfActivity;
public TestObject(Activity ac) {
this.wfActivity = new WeakReference<>(ac);
}
@JavascriptInterface
public void login(String uid) {
if (wfActivity.get() != null) {
}
}
@JavascriptInterface
public void loginOut() {
}
}
2. WebView设置WebViewClient
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
final UserInfo bean = DataSourceManager.getUserInfoBen();
if (bean != null) {
final String token = ACache.get(context).getAsString(Constants.TOKEN);
mWebView.evaluateJavascript("javascript:getUserInfo('" + bean.user_id + "','" + bean.avatar + "','" + token + "')", new ValueC
@Override
public void onReceiveValue(String value) {
}
});
}
super.onPageFinished(view, url);
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);
}
});
mWebView.addJavascriptInterface(new TestObject(mMainActivity), "testObject");
mWebView.loadUrl("https://xxx.net/xxx/xxx");
Html
<html lang="zh-cn">
<head>
<script>
function getUserInfo(uid,pwd,avatar){
return "用户信息:"+ uid+" "+pwd +" "+avatar;
}
function exitUser(uid){
return "退出账号: "+ uid;
}
</script>
</head>
<body bgcolor="#BCBCBC">
<p>
<button type="button" onclick="testObject.login(uid);">h5把用户信息给移动端,
移动端处理对应的 login 方法进行登录
</button>
</p>
<p>
<button type="button" onclick="testObject.loginOut(uid);">html用户退出操作,
移动端处理 loginOut 方法</button>
</p>
</body>
</html>