最简单的 Android webview与js互调

在开发的时候遇到了这个问题,现在记录一下。只涉及到了最基本的使用,没有更深一步的细究。

以下方法加载本地 html或者联网的 html都适用。

 

一 .android 调用 js

Java部分

@SuppressLint("SetJavaScriptEnabled")
    private void test(WebView webView, String url) {

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);

        //加载本地HTML
        //webView.loadUrl("file:///android_asset/JsToAndroid.html");

        //加载网络HTML
        webView.loadUrl(url);
        
        //调用js方法
        webView.loadUrl("javascript:callJS()");
    }

(1)加载的页面如果是项目本地的 html的话,格式固定为file:///android_asset/文件名.html

(2)调用 js 方法的时候,“javascript:callJS()”前面 javascript 是固定的写法,callJS()是要调用的 js 的方法名字,要和  js 中的方法保持一致。

 

js部分

<!-- 安卓调用js -->
    <script>
    
         function callJS(参数){
            
            console.log(参数);
          
         }
    
    </script>

注意:如果所调用的 js 的方法是需要传入参数的,上面 调用 js 的方法就写成 

 

webView.loadUrl("javascript:callJS(" + 参数+ ")");
 

二 . js 调用Android

Java部分

先写一个与 js 对象映射关系的Android类

class JsObject {
        @JavascriptInterface
        public void loginOut() {

            Intent intent = new Intent(WebActivity.this, LoginActivity.class);
            startActivity(intent);

        }
    }

示例代码是跳转了一个页面,就是点击 html页面中的退出登录按钮,跳转到 LoginActivity 页面

调用

private void callJava(WebView webView, String url) {

        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);

        webView.addJavascriptInterface(new JsObject(), "call");

        //加载本地HTML
        //webView.loadUrl("file:///android_asset/JsToAndroid.html");

        //加载网络HTML
        webView.loadUrl(url);

    }

 

js 部分

<!-- js调用安卓 -->
    <script>
        function callAndroid() {
                
            <!--由于对象映射,所以调用test对象等于调用Android映射的对象-->
            call.logOut();
        }
      
    
    </script>

 

(1)Java映射类 JsObject 的 logout() 方法前要加注解 @JavascriptInterface

 

(2)call相当于一个映射的对象,Java 端的对象为 call 的话,js 端调用的对象也必须为 call

(3)JsObject 类中的定义的方法 logout()要和 js 中的方法名称保持一致

注意:如果 js 需要向 Java 传递参数的话,js 部分代码为

window.call.logout("123") 

Java部分代码( 在 JsObject 类中的logout()方法中接收)

public void logout(String para){

log.e ( TAG , para );

}

以上,本人才疏学浅,目前只能有这个程度。其实使用起来还是很简单的。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值