JS调用Java代码(Android)

来源:互联网 发布:淘宝网iphone6 无指纹 编辑:程序博客网 时间:2024/05/17 02:54

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");
0 0