js调用android本地方法

picasso
昨天自己录了一个android本地调用h5中js方法,可能是因为视频比较耗费流量,结果看的人不是很多,所以决定还是先写文章,再录制一个同步的视频,这样大家就会方便很多了。

好,今天给大家带来的是h5中调用android本地方法。其实很简单,只需要记住几个规则就可以了。

接下来就直接上代码了

html文件,非常简单,自己写一下就行

file.html这个文件我放到了assets目录中了

<html>
<body>
<button onclick="window.nihaoma.showToast()">点击吐司</button>
</body>
</html>

activity代码

    package com.guaju.webview2js;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.webkit.JavascriptInterface;
    import android.webkit.WebSettings;
    import android.webkit.WebView;        
    public class MainActivity extends AppCompatActivity {
        private static final String TAG = "MainActivity";
        private WebView wv;
        @JavascriptInterface
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //初始化webview
            wv = (WebView) findViewById(R.id.webView);
            //获得设置
            WebSettings settings = wv.getSettings();
            //启用js
            settings.setJavaScriptEnabled(true);
            //拼装网址
            String url="file:///android_asset/file.html";
            //加载网址
            wv.loadUrl(url);
            //关键代码:添加js接口一共js调用,第一个参数是传递的包含方法的类的实例,第二个则是这个类的“代号”,这个代号需要在js中使用
            wv.addJavascriptInterface(new ToastUtils(),"nihaoma");
        }

}

看注释就一目了然了,布局不再展示了哈,就一个webview

ToastUtils一个供js调用的类,里面有个打印吐司的方法

package com.guaju.webview2js;

import android.webkit.JavascriptInterface;
import android.widget.Toast;

/**
 * Created by guaju on 2017/9/29.
 */

public class ToastUtils {
//注意一定要加上这句注解,否则调用不成功
    @JavascriptInterface
    public  void showToast(){
        Toast.makeText(App.appContext, "我爱你中国", Toast.LENGTH_SHORT).show();
    }
}

app类,提供了上下文,记得在清单文件中声明name

package com.guaju.webview2js;
import android.app.Application;
import android.content.Context;

/**
 * Created by guaju on 2017/9/29.
 */

public class App extends Application {
  public  static Context appContext;

    @Override
    public void onCreate() {
        super.onCreate();
        appContext=this;
    }
}

ok,小伙伴们,是不是很简单,赶快来练习一下上手吧~~~