1.html代码

<script type="text/javascript">
function javacalljs(){
document.getElementById("content").innerHTML = "JAVA调用了JS的无参函数";
}
function javacalljswith(arg){
document.getElementById("content").innerHTML = (arg);
}
</script>
<input type="button" value="点击调用java代码" onclick="window.android1.jsCall()" />
<input type="button" value="点击调用java代码并传递参数" onclick="window.android1.jsCall('paramsvalue')" />

2.java代码

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast; import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick; /**
* Android 和 js 的互相调用
* 布局文件为 2个 button,一个WebView
*/
public class ActivityWebView extends Activity {
@BindView(R.id.webView)
WebView webView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ble);
ButterKnife.bind(this); webView.loadUrl("http://192.168.61.104:8080/update/android_js.html");
webView.getSettings().setJavaScriptEnabled(true);// 启用javascript
webView.addJavascriptInterface(this, "android1"); // android1 为html中的别名
} /**
* 被js调用的函数
*/
@JavascriptInterface
public void jsCall() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(ActivityWebView.this, "无参数的方法被js调用", Toast.LENGTH_SHORT).show();
}
});
} /**
* 被js调用的函数 jsCall
* jsCall这个为html中的函数名字
* 必须加上 @JavascriptInterface 这个注解
*/
@JavascriptInterface
public void jsCall(final String params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(ActivityWebView.this).setMessage(params).show();
}
});
} @OnClick(R.id.btn0)
public void btn0() {
webView.loadUrl("javascript:javacalljs()");// 调用无参的js: javacalljs 为js的函数名
} @OnClick(R.id.btn1)
public void btn1() {
String params = "params";// 调用有参的js: javacalljswith 为js的函数名,params 为参数值
webView.loadUrl("javascript:javacalljswith('" + params + "')");
}
}

参考: http://blog.csdn.net/leejizhou/article/details/50894531/

android 和 js 交互的更多相关文章

  1. Webview Android与js交互

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

  2. Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

  3. Android与js交互拍照上传资料

    应用场景:h5通知android端拍照,选相册,然后将图片路径上传成功之后,获取到网络路径,将此路径返还给h5界面,并展示出来. android与js快速交互 效果图如下:   1.在Activity ...

  4. Android与js交互

    本文转载自:http://blog.csdn.net/it1039871366/article/details/46372207 一文. Android 中可以通过webview来实现和js的交互,在 ...

  5. Android与JS交互,json传参问题

    一.JS调用Android的方法 JS调用安卓的方法,并且传递的参数为json格式的字符串(JSONObject.toString()), 例如: var json = {"name&quo ...

  6. Android—android与js交互以及相互传参

    Android中可以通过WebView来实现与js的交互,让用户可以在android客户端看到js写的页面,接下来为大家介绍的就是怎样实现此功能: 首先android项目目录下有“assets”文件夹 ...

  7. android webview js交互 第一节 (java和js交互)

    转载请注明出处         挺帅的移动开发专栏  http://blog.csdn.net/wangtingshuai/article/details/8631835        在androi ...

  8. Android 和 JS交互方法初探

    起初有个需求,就是需要监听网页的图片点击,然后图片单独跳转到另一个页面单独显示 这里就需要用JS和Android Native方法之间的通信 先说上面的解决办法之前先引出两个Android的方法 1: ...

  9. android与JS交互,互相调用方法,跳转到网页

    在main下面New - Folder - Assets Folder,在Assets下面新建一个js_android.html <html><head> <meta h ...

随机推荐

  1. Linux系统中rm删除命令

    rm命令 1.可以删除一个目录中的一个或多个文件或目录 2.可以将某个目录及其下属的所有文件及其子目录均删除掉 3.对于链接文件,只是删除整个链接文件,而原有文件保持不变 语法 rm (选项)(参数) ...

  2. 网络中的tarpit/tar pit

    最近看haproxy源码,里面有个TARPIT的概念不能理解,找了很久才找到对应的意思.特此记录. tarpit 本意是“沼泽地.地洼地”,这里显然把它引申为“捕获或者困住某个物体”. 在网络语义中提 ...

  3. c# combbox删除最后一个item界面不更新

    如果c#的combbox删除的item是当前选中的,而且是最有一个(如果不是最后一个,我也不知道会不更新,没有去测试,但是可以收到跟新到其他的item),它不会自动清空显示,而是保存当前选中. 所以要 ...

  4. [webpack]手写一个mvp版本的webpack

    let fs = require('fs'); let path = require('path'); let babylon = require('babylon'); // Babylon 把源码 ...

  5. 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)

    本人西电硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:无名小公司有时也很给力哦以下绝对是各大公 ...

  6. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_17-课程预览功能开发-前后端测试

    启动前端代码 前端课程找到课程的发布页面 这样就打开了预览页面 结束

  7. (三)java虚拟机内存管理和线程独占区和线程共享区

    一.内存管理 二.线程独占区之程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节 ...

  8. python 递归和匿名函数

    1.理解函数执行流程 def foo1(b, b1=3): print("foo1 called", b, b1) def foo2(c): foo3(c) print(" ...

  9. ORM学习笔记

    19周 11章 django ORM基本创建类型以及生成数据库结构 类型: dbfirst :通过数据库创建类 codefirst:先创建类 再创建数据库 --最常用 ORM的意思: 通过类创建数据库 ...

  10. Python3安装后无法使用退格键

    解决办法 # 安装readline模块 yum -y install readline-devel # 进入Python安装目录 cd /usr/python/Python-3.7.2 # 重新安装 ...