Android 使用js调用Java
2024-10-09 19:26:42
效果如:
主要用到一个接口类: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>
源代码下载
最新文章
- javascript 时间格式化
- webpack react基础配置一
- 如何搭建Java开发环境(包括下载、安装和配置JDK)和Eclipse的安装
- nodejs:本地文件夹http服务器http-server
- 远程连接mysql
- 使用JFinal框架中Validator
- TensorFlow-Slim使用方法说明
- Hessian源码分析--总体架构
- python 生成器generator
- 20165306 Exp2 后门原理与实践
- 使用Visual Studio Code开发(编译、调试)C++程序
- Ping IP速度范围
- 6.docker的私用镜像仓库registry
- 删掉centos原有的openjdk并安装sun jdk
- 使用MongoDB数据库(1)(三十五)
- netstat 查看端口命令
- IncrediBuild 2.40 过期时间
- Python遗传算法工具箱DEAP框架分析
- Python学习---文件操作的学习1208
- MyEclipse中关于JRE System Library、Web App Libraries的疑惑
热门文章
- windo phone8.1 样式的基本使用(一)
- PHP日期与时间
- [BI项目记]-对项目文件进行规划
- ibatis.net MVC 单元测试 错误解决方法
- 去掉移动端页面 input, textarea, button, a 标签获取焦点时显示的黑影
- WPF
- JSON.stringify() / JSON.parse()
- requirejs:模块加载(require)及定义(define)时的路径小结
- Ajax缓存解决办法(转载)
- 【MongoDB:第二天】基本操作