说明:

本文主要介绍安卓和JavaScript的交互:js调用安卓有参、js调用安卓无参、安卓调用js有参、安卓调用js无参


一、JS调用Android并传参

Android代码

public class MainActivity extends Activity {    private WebView webView;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.webView);        //设置WebView支持JavaScript        webView.getSettings().setJavaScriptEnabled(true);        String url = "http://xxx.html";        webView.loadUrl(url);        //在js中调用本地java方法        webView.addJavascriptInterface(new JsInterface(), "AndroidWebView");        //添加客户端支持        webView.setWebChromeClient(new WebChromeClient());    }    private class JsInterface {        public JsInterface() {        }        //在js中调用window.AndroidWebView.showInfoFromJs(name),便会触发此方法。        @JavascriptInterface        public void showInfoFromJs(String name) {            //TODO 本地方法        }    }}

JS代码

Android WebView 与 Javascript 交互    

测试Android WebView 与 Javascript 交互

JS调用Java

二、JS调用Android不传参

Android代码

private class JsInterface {        public JsInterface() {        }        //在js中调用window.AndroidWebView.showInfoFromJs(name),便会触发此方法。        @JavascriptInterface        public void showInfoFromJs() {            //TODO 本地方法        }    }

JS代码


三、Android调用js并传参

Android代码

public class MainActivity extends Activity {    private WebView webView;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.webView);        //设置WebView支持JavaScript        webView.getSettings().setJavaScriptEnabled(true);        String url = "http://xxx.html";        webView.loadUrl(url);        //添加客户端支持        webView.setWebChromeClient(new WebChromeClient());    }       //button点击事件    public void sendInfoToJs(View view) {          String msg = ((EditText) findViewById(R.id.input_et)).getText().toString();          //调用js中的函数:showInfoFromJava(msg)          webView.loadUrl("javascript:showInfoFromJava('" + msg + "')");      }  }

JS代码


四、Android调用js不传参

Android代码

//button点击事件    public void sendInfoToJs(View view) {          //调用js中的函数:showInfoFromJava(msg)          webView.loadUrl("javascript:showInfoFromJava()");      }  

JS代码



注意:

Android调用js方法,如果在oncreate方法中调用,js是不会执行的,需要延迟加载,哪怕只是1毫秒

webview.postDelayed(new Runnable() {@Overridepublic void run() {webview.loadUrl("javascript:showInfoFromJava();}}, 1);


更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android图形图像
  3. 【Android】Service 的生命周期
  4. contentProvider操作
  5. AndroidStudio3.0及其以上集成ButterKnife时候的Android(安卓)Gr
  6. Android(安卓)intent.Action 参数值及对应功能介绍(转)
  7. Android获取系统拍照程序发出的广播
  8. Android(安卓)greenDAO数据库配置教程
  9. Android(安卓)Studio去除标题栏

随机推荐

  1. Talking about Android Process
  2. android 系统编译要求,官方资料
  3. Android(安卓)BroadcastReceiver 简介
  4. Android local manifest
  5. android 设置Button为圆形按钮
  6. 不自动弹出键盘
  7. android中怎么在文字两边划线
  8. android布局实例代码
  9. QR Codes Made Easy In Android
  10. Android Interprocess Communication(一)