java和js互调 webview
2024-09-20 00:38:29
public class JavaAndJSActivity extends Activity implements View.OnClickListener { private EditText etNumber; private EditText etPassword; private Button btnLogin; /** * 加载网页或者说H5页面 */ private WebView webView; /** * Find the Views in the layout<br /> * <br /> * Auto-created on 2016-07-28 11:43:37 by Android Layout Finder * (http://www.buzzingandroid.com/tools/android-layout-finder) */ private void findViews() { setContentView(R.layout.activity_java_and_js); etNumber = (EditText) findViewById(R.id.et_number); etPassword = (EditText) findViewById(R.id.et_password); btnLogin = (Button) findViewById(R.id.btn_login); btnLogin.setOnClickListener(this); initWebView(); } /** * Handle button click events<br /> * <br /> * Auto-created on 2016-07-28 11:43:37 by Android Layout Finder * (http://www.buzzingandroid.com/tools/android-layout-finder) */ @Override public void onClick(View v) { if (v == btnLogin) { // Handle clicks for btnLogin login(); } } private void login() { String numebr = etNumber.getText().toString().trim(); String password = etPassword.getText().toString().trim(); if (TextUtils.isEmpty(numebr) || TextUtils.isEmpty(password)) { Toast.makeText(JavaAndJSActivity.this, "账号或者密码为空", Toast.LENGTH_SHORT).show(); } else { //登录 login(numebr); } } /** * Java调用javaScript * * @param numebr */ private void login(String numebr) { webView.loadUrl("javascript:javaCallJs(" + "'" + numebr + "'" + ")"); setContentView(webView); } private void initWebView() { webView = new WebView(this); WebSettings webSettings = webView.getSettings(); //设置支持javaScript脚步语言 webSettings.setJavaScriptEnabled(true); //支持双击-前提是页面要支持才显示 // webSettings.setUseWideViewPort(true); //支持缩放按钮-前提是页面要支持才显示 webSettings.setBuiltInZoomControls(true); //设置客户端-不跳转到默认浏览器中 webView.setWebViewClient(new WebViewClient()); //设置支持js调用java webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android"); //加载网络资源 // webView.loadUrl("http://10.0.2.2:8080/assets/JavaAndJavaScriptCall.html"); //加载assets文件夹下的资源 webView.loadUrl("file:///android_asset/JavaAndJavaScriptCall.html"); //显示页面 // setContentView(webView); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); findViews(); } /** * js可以调用该类的方法 */ class AndroidAndJSInterface{ @JavascriptInterface public void showToast(){ Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); } } }
JavaAndJavaScriptCall.html
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <script type="text/javascript"> function javaCallJs(){ document.getElementById("content").innerHTML += "<br\>java调用了js无参函数"; } function javaCallJs(arg){ document.getElementById("content").innerHTML = ("欢迎:"+arg ); } function showDialog(){ alert("你好,我是来自javascript"); } </script> </head> <body> <div align="left" id="content"> 555</div> <div align="right">光临</div> <p><img src="http://atguigu.com/images/logo.gif"></p> <input type="button" value="点击Android被调用" onclick="window.Android.showToast()" /> </body> </html>
最新文章
- React在开发中的常用结构以及功能详解
- linux启动时文件系统错误问题
- python 写文件,utf-8问题
- python进阶学习笔记(四)--多线程thread
- NSNumber和NSValue
- android之外部文件存储和读取
- 关于windows下c/c++的rand()的一个测试
- C++字符类型总结区别wchar_t,char,WCHAR
- 八、jdk工具之JvisualVM、JvisualVM之一--(visualVM介绍及性能分析示例)
- vs2013下使用Assist X的破解方法
- Python自动化运维之21、CSS
- ssh框架-Struts2(二)
- 从零开始搭建springboot+mybatis+thymeleaf增删改查示例
- 中兴F660光猫改桥接
- Python datetime与timestamp之间的转换
- [数位dp] spoj 10738 Ra-One Numbers
- 接之前的文章,VS2017中使用Spring.NET配置以及使用方法(framework4.6.1超详细)
- 利用pyusb来查询当前所以usb设备
- WinFrom弹出输入框
- Google Chrome Resize Plugin