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 Bash Shell j简单入门

    BASH 的基本语法 最简单的例子 —— Hello World! 关于输入.输出和错误输出 BASH 中对变量的规定(与 C 语言的异同) BASH 中的基本流程控制语法 函数的使用 2.1     ...

  2. vue使用install函数把组件做成插件方便全局调用

    在vue项目中,我们可以自定义组件,像element-ui一样使用Vue.use()方法来使用,具体实现方法: 1.首先新建一个Cmponent.vue文件 // Cmponent.vue <t ...

  3. PorterDuffXfermode之PorterDuff.Mode.SRC_OUT

    package com.loaderman.customviewdemo.view; import android.content.Context; import android.graphics.B ...

  4. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_08-用户认证-认证服务查询数据库-用户登录前端

    点击登陆注册链接 跳转到登陆的页面 门户的前端代码 当前路径base64编码 登陆的表单,在学习中心的前端. 这就是登陆的表单 这是表单的校验 请求服务端的接口 登陆请求的方法 请求的地址nginx上 ...

  5. python 中 logging 模块的 log 函数以及坑

    记录下吧,一个日志的函数,但有个坑是在调用函数时需要先将函数实例化为一个变量,否则进入某个循环时会多次刷新日志: """ 日志模块 """ ...

  6. 基于pythonselect.select模块通信的实例讲解

    基于python select.select模块通信的实例讲解 要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值. select()方法接收并监控3个通信列表, 第一 ...

  7. fastJson工具类

    jar:fast.jar 依赖: <!-- fastjson --> <dependency> <groupId>com.alibaba</groupId&g ...

  8. vue+element项目中过滤输入框特殊字符小结

    可以在main.js中写入方法 Vue.prototype.validSe = function (value, number = 255) { value = value.replace(/[`-* ...

  9. 【数据库开发】C++测试redis中的publish/subscribe

    运用 http://blog.csdn.net/xumaojun/article/details/51558237 中的redis_publisher.hredis_publisher.cpp red ...

  10. 用Inno setup制作以管理员权限启动的安装包

    inno setup制作的安装包,默认是不需要管理员权限启动的.我们制作安装包,往往需要做一些设置工作,这些设置工作可能用到管理员权限.使用Resource Hacker修改inno setup资源, ...