js 与 Android 的交互

来源:互联网 发布:学c语言是用什么软件 编辑:程序博客网 时间:2024/05/17 12:01

1. js调用Android

  1. 定义给js调用的接口
package com.xunku.weixiaobao.me.common;import android.content.Context;import android.util.Log;import android.webkit.JavascriptInterface;/** * Created 郑贤鑫 on 2017/4/7. */public class JavaScriptinterface {    Context context;    public JavaScriptinterface(Context c) {        context= c;    }    /**     * 与js交互时用到的方法,在js里直接调用的     */    @JavascriptInterface    public void HtmlcallJava(String jsonString) {        Log.i("sinstar", "showToast: "+jsonString);//        Toast.makeText(context, jsonString, Toast.LENGTH_LONG).show();    }}
2.将这个 接口 传递给webview 的html页面

WebSettings webSettings = wvCourseContent.getSettings();        //设置WebView属性,能够执行Javascript脚本        webSettings.setJavaScriptEnabled(true);        //向 html 页面 注入实例        wvCourseContent.addJavascriptInterface(new JavaScriptinterface(this),"jsObj");        //设置可以访问文件        webSettings.setAllowFileAccess(true);        //设置支持缩放        webSettings.setBuiltInZoomControls(true);        //加载需要显示的网页        wvCourseContent.loadUrl(url);        //设置Web视图        wvCourseContent.setWebViewClient(new webViewClient ());
//Web视图    private class webViewClient extends WebViewClient {        public boolean shouldOverrideUrlLoading(WebView view, String url) {            view.loadUrl(url);            return true;        }    }
  1. js 调用这个接口
<script type="text/javascript" language="javascript"> var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端if(isAndroid){window.jsObj.HtmlcallJava('{"transStatus":"01","orderNo":"20170309174643528038477","msg":"付款成功"}');}else{window.webkit.messageHandlers.showMobile.postMessage('{"transStatus":"01","orderNo":"20170309174643528038477","msg":"付款成功"}');} </script>


0 0