这个 刚开始 我也不会,把我整的是个蛋疼的啊,

最后发现其实挺简单的,我现在给大家说的是我自己掌握的一种,

1. 先是要给项目配置一些权限

(1)、访问网络权限

(2)、访问SD卡权限

2.给webview 配置

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setJavaScriptEnabled(true);

3.这个就是webview想JS 暴露一个 可以调用的对象(用来JS调用JAVA方法和JAVA调用JS又返回值的方法时用,如果非上面的两种情况时,则可以忽略此步。)

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是内部类,代码在后面。android 是接口名字。

上面的是准备工作

下面的就是要调用的代码了

java调用JS 方法(无返回值)

webView.loadUrl("javascript:getStsmA()");//调用 JS 中的方法

没错,你没有看错,就是这么简单,在加载完HTML页面后,执行这段代码,就可以调用JS 中的方法了

JS调用java

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是内部类,代码在后面。android 是接口名字。

webView.loadUrl("javascript:getStsmA()");//调用JS中的方法

private class JsToJava {

@JavascriptInterface

public void getStsm(String paramFromJS) {//java暴露的方法,用于 JS 调用

Log.e(TAG, "js返回结果===" + paramFromJS);//处理返回的结果

}

}

我在贴出来JS 代码

大家要注意了最后一段代码

window.android.getStsm(rtn) ;

这段代码的意思是JS调用JAVA中的方法

android:java中想JS 中暴露的对象名

getStsm:用Java中暴露的对象名。方法名(就是调用java中的getStsm()这个方法)

这样JS 就可以通过java这边暴露的对象名和方法名调用

大家要输还是不理解的话,就看看 这张图吧!!!

好了 给大家上代码 吧

import android.annotation.SuppressLint;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.webkit.JavascriptInterface;

import android.webkit.WebView;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private WebView webView;

private static final String TAG = "MainActivity";

private Button but;

@SuppressLint("JavascriptInterface")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

webView = (WebView) this.findViewById(R.id.webView_viewTable);

but = (Button) this.findViewById(R.id.but);

/**

*在Android中要 用java调用 JS 很简单 直接

*webView.loadUrl("javascript:getfsA()");//调用 JS 中的方法

*这个就是调用无返回值的 方式,直接一句话 (当然 对webview 还有一些 配置,在这里 先 不说了)

* 传参数给webview 的话 ,就是在

* webView.loadUrl("javascript:getfsA('参数')");//调用 JS 中的方法

* 就是上面的方法

* 这样 我们的 java 调用 JS 的无返回值 方法 ,就完了

*

* 要调用又返回值的话,我们这边不是接收者,而是我们调用JS 中的方法,

* 让此方法调用 本地的 一个java方法,然后 传值过来,这样 我们就接收到值了

* */

//这几行代码是对webview的授权,不能少

webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

webView.getSettings().setBuiltInZoomControls(true);

webView.getSettings().setJavaScriptEnabled(true);

webView.addJavascriptInterface(new JsToJava(), "android"); //JsToJava是内部类,代码在后面。android 是接口名字。

/** 这里的 第二个参数 就是 JS 回调 java的 一个方法名大家注意看下html文件中 调用的方法的返回

window.android.getfs(rtn);//JS 中 的代码,这句代码的意思是,通过android这个java暴露的借口,调用getfs()这个方法

*

**/

webView.loadUrl("file:///storage/emulated/0/1.html");//这句是载入一个html页面。

but.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

webView.loadUrl("javascript:getfsA()");//调用 JS 中的方法

}

});

}

private class JsToJava {

@JavascriptInterface

public void getfs(String paramFromJS) {//Android暴露的方法,用于 JS 调用

//这个方法就是JS 调用java方法 ,传回 返回值,这样我们就接收到JS 返回给我们的值了

Log.e(TAG, "js返回结果===" + paramFromJS);//处理返回的结果

}

}

}

下面的是html 代码

function  getStsmA() {

var rtn =  getStsm();

window.android.getStsm(rtn) ; }

js 引用 java常量_java调用JS 与JS 调java相关推荐

  1. java 存储过程_Java 调用存储过程

    本文阐述了怎么使用DBMS存储过程.我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是 ...

  2. js与c语言互相调用,Objc与JS间相互调用

    过去3.4年都在进行跨平台的混合应用开发,但一直没有系统梳理跨平台技术的底层原理,趁新工作未正式入职,这里整理一下. 跨平台的一种实现是基于webview.所谓webview,实质是在原生app中打开 ...

  3. 什么是java常量_java常量是什么?

    Java常量是什么? JAVA常量就是在程序中固定不变的值,是不能改变的数据.例如数字1.字符"a".浮点数3.2等.在Java中,常量包括整型常量.浮点数常量.布尔常量.字符常量 ...

  4. java 标识变量_Java变量与数据类型之一:Java编程规范,关键字与标识符

    原标题:Java变量与数据类型之一:Java编程规范,关键字与标识符 大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字 ...

  5. java私塾 java篇_Java私塾跟我学系列——JAVA篇 五、

    五:Java如何做到让机器理解我们想要做的东西 用一个图来描述这个过程会比较容易理解: 1:编写代码 首先把我们想要计算机做的事情,通过Java表达出来,写成Java文件,这个过程就是 编写代码的过程 ...

  6. java创新_Java没有创新了吗?Java 13提供可提高生产率和效率的功能

    Java没有创新了吗? 在其CodeOne会议上,Oracle解释了Java SE 13正式发布后Java的快速发布周期如何带来创新. 在过去的二十多年中,Java编程语言新版本的开发速度相对较慢,仅 ...

  7. el java常量_java - EL

    简介: EL 表达式语言 ,简化了 JSP 语言的写法. eg: if(session.getAttribute(nunamen)!==null) { Out.println(session.getA ...

  8. linux shell java 参数_java调用linux中的shell脚本传递参数并返回执行结果

    [刚接触 linux下的开发,最近遇到java调用shell脚本的问题,找到一个比较适合菜鸟级的方法,转述如下: 在需要运行的SHELL脚本第一行添加 #!/bin/sh然后在终端运行  chmod ...

  9. JAVA飞信_java调用飞信接口发短信 - 贪吃蛇学院-专业IT技术平台

    java调用飞信接口发短信,看到挺好的,有利于大家做毕业设计加亮点,就发给大家了(新人发帖,不会发多个文件名,测试类就放这了) 需要这3个jar包: commons-codec-1.4.jar com ...

最新文章

  1. 如何修改博士论文?这份45页PPT《Editing your thesis》教你
  2. 仿Gin搭建自己的web框架(五)
  3. 制作r710 linux系统盘,记一次云主机系统盘扩容及制作私有镜像的操作步骤
  4. MySQL模糊查询—like关键字
  5. 微信小程序-地图组件(map)的使用
  6. live555 源码分析:基础设施
  7. 数据结构- 栈(实现综合计算器)(一位数计算 扩展到 多位数计算)
  8. python算24点穷举法_关于24点去重的算法?
  9. MyEclipse安装JS代码提示(Spket插件)
  10. 新版微信不停跳转到小程序_如何设置跳转微信小程序
  11. PXE+kickstart——实现网络批量装机
  12. java 修改mysql密码_mysql数据库忘记密码时如何修改
  13. JAVA学子商城项目问题集锦(springboot)
  14. 多质点列车动力学模型
  15. 一批恶意Google Play应用窃取用户银行信息
  16. 如何实现基于 RADIUS 协议的双因子认证 MFA?
  17. android学习笔记----多线程断点续传下载原理设计
  18. FLASH--W25QXX系列存储器
  19. JVM笔记(三):垃圾回收篇
  20. centos6.7 安装端口映射工具 rinetd

热门文章

  1. SAP Spartacus ProductService.get的几个调用场景
  2. 微软Azure的access control - IAM
  3. SAP CRM IBASE保存出错,可能有哪些原因
  4. 如何在Hybris Backoffice里给用户维护电话号码
  5. Fiori elements:when smart template is entered for first time, no data filled
  6. Fiori Hash url的生成原理
  7. PeriodicityText in CRM Fiori SalesPipeline
  8. 2015-03-19 My Appointment text read case
  9. SAP UI5 setModel of scFld Controller
  10. SAP UI5 JavaScript文件的lazy load - 懒加载