java调用JS 与JS 调java
来源:互联网 发布:怎么看淘宝号有几颗心 编辑:程序博客网 时间:2024/05/16 12:48
本人博客地址:http://my.oschina.net/lijindou/blog
转载请标明原址:https://my.oschina.net/lijindou/blog/746993
这个 刚开始 我也不会,把我整的是个蛋疼的啊,
最后发现其实挺简单的,我现在给大家说的是我自己掌握的一种,
1. 先是要给项目配置一些权限
(1)、访问网络权限
<uses-permission android:name="android.permission.INTERNET" />
(2)、访问SD卡权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
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) ; }
0 0
- java调用JS 与JS 调java
- java调用js,js中调用java
- Android 里js 与java相互调用
- Android ---js与java的相互调用
- Js与java的互相调用
- Android WebView js与Java调用实例
- android之js与java互相调用
- Android WebView JAVA 与 JS 相互调用
- Android ---js与java的相互调用
- dwr js与java互相调用
- java与js方法相互调用
- Android ---js与java的相互调用
- JS 与JAVA 的互相调用
- java 如何调用js
- Js调用Java
- ---java 调用js
- Java调用js
- JS调用Java代码
- mac记录
- 更新metasploit
- MyBatis进阶
- HDU 3294 Girls' research 【最长回文串+字符周期变换】
- linux进程间通信IPC
- java调用JS 与JS 调java
- Python selenium —— 一定要会用selenium的等待,三种等待方式解读
- codeforces基础题——#357(div2) D
- ubuntu 16.04 phpEclipse插件安装及配置Xdebug
- AsyncLoader - Android中的异步加载器
- xampp +phpstrom环境配置
- 我学Hibernate - 02 (加入注解方式)
- Ubuntu14.04下tftp的安装,并使用tftp将文件传输到开发板上面执行
- JAVA温习课堂5