JS调用Java代码(Android)
16lz
2021-01-23
html代码
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>测试</title> <script type="text/javascript"> function openDetailPage(){ client.openDetailPage("{'ids':[16503, 16615, 8135, 7963],'pos':1}") } </script></head><body><br /> <button onclick="openDetailPage()">openDetailPage</button></body></html>
Android中代码
1,接收传过来的信息 类
class JsOperation { Activity mActivity; OnInfoPassedListener mListener; public JsOperation(Activity activity, OnInfoPassedListener listener) { mActivity = activity; this.mListener = listener; } //打开图片详情页面 @android.webkit.JavascriptInterface public void openDetailPage(String info) { LogCus.d("JsOperation", "info>>>" + info); parseInfo(info); } private void parseInfo(String info) { LiveJsInfo liveInfo = JsonUtil.jsonToObj(info, LiveJsInfo.class); if (liveInfo != null && mListener != null) { mListener.infoPassed(liveInfo.pos, liveInfo.ids); } else { LogCus.w("JsOperation", "liveInfo == null"); } } }
2,数据传过来后的回调函数
public interface OnInfoPassedListener{ void infoPassed(int pos, int...photoIds); }
真正调用代码:
wvContainer.addJavascriptInterface(new JsOperation(this, new OnInfoPassedListener() { @Override public void infoPassed(int pos, int... photoIds) { LogCus.d("infoPassed", "photoIds>>" + Arrays.toString(photoIds) + "pos>>>" + pos); } }), "client");
更多相关文章
- C语言函数以及函数的使用
- 【Android】Android Layout Binder——根据layout布局文件自动生
- Android应用程序进程启动过程的源代码分析(2)
- Android源代码编译
- Android应用程序组件Content Provider的启动过程源代码分析(6)
- android常用代码片段
- Android系统进程Zygote启动过程的源代码分析(3)
- [Android Studio] Android Studio如何提示函数用法
- Android webview注入自己的js代码(js传入function等其他参数解决)