效果如:

主要用到一个接口类:MyObject

package com.example.jsdemo;

import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.webkit.JavascriptInterface;
import android.widget.Toast; public class MyObject {
private Context context;
public MyObject(Context context) {
this.context = context;
} //将显示Toast和对话框的方法暴露给JS脚本调用
@JavascriptInterface
public void showToast(String name) {
Toast.makeText(context, name+"我是后台追加的", Toast.LENGTH_SHORT).show();
} @JavascriptInterface
public void showDialog() {
new AlertDialog.Builder(context)
.setTitle("标题")
.setMessage("我是Java不带参").create().show();
}
}

MainActivity实现如:

package com.example.jsdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebSettings;
import android.webkit.WebView; public class MainActivity extends AppCompatActivity {
private WebView wView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wView = (WebView) findViewById(R.id.wView);
wView.loadUrl("file:///android_asset/demo1.html");
WebSettings webSettings = wView.getSettings();
//①设置WebView允许调用js
webSettings.setJavaScriptEnabled(true);
webSettings.setDefaultTextEncodingName("UTF-8");
//②将object对象暴露给Js,调用addjavascriptInterface
wView.addJavascriptInterface(new MyObject(MainActivity.this), "myObj");
}
}

然后是main的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="hello_world"
android:id="@+id/textView" />
<WebView
android:id="@+id/wView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp" /> </RelativeLayout>

最后是html文件:

<html>
<head>
<title>Js调用Android</title>
</head> <body>
<input type="button" value="JS调用Java(带参)" onclick="myObj.showToast('我是Js参数~');"/>
<input type="button" value="JS调用Java(不带参)" onclick="myObj.showDialog();"/>
</body>
</html>

源代码下载

最新文章

  1. javascript 时间格式化
  2. webpack react基础配置一
  3. 如何搭建Java开发环境(包括下载、安装和配置JDK)和Eclipse的安装
  4. nodejs:本地文件夹http服务器http-server
  5. 远程连接mysql
  6. 使用JFinal框架中Validator
  7. TensorFlow-Slim使用方法说明
  8. Hessian源码分析--总体架构
  9. python 生成器generator
  10. 20165306 Exp2 后门原理与实践
  11. 使用Visual Studio Code开发(编译、调试)C++程序
  12. Ping IP速度范围
  13. 6.docker的私用镜像仓库registry
  14. 删掉centos原有的openjdk并安装sun jdk
  15. 使用MongoDB数据库(1)(三十五)
  16. netstat 查看端口命令
  17. IncrediBuild 2.40 过期时间
  18. Python遗传算法工具箱DEAP框架分析
  19. Python学习---文件操作的学习1208
  20. MyEclipse中关于JRE System Library、Web App Libraries的疑惑

热门文章

  1. windo phone8.1 样式的基本使用(一)
  2. PHP日期与时间
  3. [BI项目记]-对项目文件进行规划
  4. ibatis.net MVC 单元测试 错误解决方法
  5. 去掉移动端页面 input, textarea, button, a 标签获取焦点时显示的黑影
  6. WPF
  7. JSON.stringify() / JSON.parse()
  8. requirejs:模块加载(require)及定义(define)时的路径小结
  9. Ajax缓存解决办法(转载)
  10. 【MongoDB:第二天】基本操作