• Android与JS混编(js调用java)


    项目中需要使用android与js的混编来开发app。

    下面就介绍一下吧。

    有时候我们需要用js调用native控件,要想实现这个功能,我们需要做的就只有三步:

    1.允许webview执行js脚本

    2.向js暴露方法

    3.访问网页

    下面是代码部分:

    java:

     1 package com.bdyx.founder.jsnativedemo;
     2 
     3 import android.os.Bundle;
     4 import android.support.v7.app.AppCompatActivity;
     5 import android.webkit.JavascriptInterface;
     6 import android.webkit.WebView;
     7 import android.widget.Toast;
     8 
     9 public class MainActivity extends AppCompatActivity {
    10     private WebView webView;
    11     @Override
    12     protected void onCreate(Bundle savedInstanceState) {
    13         super.onCreate(savedInstanceState);
    14         setContentView(R.layout.activity_main);
    15         webView = (WebView) findViewById(R.id.wv);
    16         setWebView();
    17     }
    18     private void setWebView(){
    19         //允许JavaScript执行
    20         webView.getSettings().setJavaScriptEnabled(true);
    21         //向js传递对象
    22         webView.addJavascriptInterface(new ShowToast(),"toastandroid");
    23         //不会node的小伙伴可以保存到assets
    24         //webView.loadUrl("file:///android_asset/index.html");
    25         //访问网页
    26         webView.loadUrl("http://192.168.253.1:8000/");
    27     }
    28      public final class ShowToast {
    29         //Html调用此方法传递数据,注解一定要留着否则会出错
    30         @JavascriptInterface
    31         public void show() {
    32             Toast.makeText(MainActivity.this,"调用",Toast.LENGTH_LONG).show();
    33         }
    34     }
    35 }

    html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>weifengzz</title>
        <script type="text/javascript">
            function showToast() {
                window.toastandroid.show();
            }
        </script>
    </head>
    <body>
    <h1>本例子是点击按钮调用android代码</h1>
    <input type="button" name="" value="点击调用" onclick="javascript:showToast()"/>
    
    </body>
    </html>

    其实就是这么简单!

    项目已经传到github上了

    https://github.com/weifengzz/JSWidthAndroidNative

  • 相关阅读:
    element:记一次重置表单引发提交数据为默认数据现象
    三种常用又简单的排序算法
    (07)GitHub从2021.08.13开始使用Token代替账号和密码
    does not implement methodSignatureForSelector:
    自用python库
    2048
    CCSP2021游记
    2021 CCPC 桂林站游记
    2021 ICPC 沈阳站游记
    2021SDU新生赛游记
  • 原文地址:https://www.cnblogs.com/weifengzz/p/5604307.html
Copyright © 2020-2023  润新知