基本信息
源码名称:android 实现js交互(互相调用) 示例源码下载
源码大小:5.96M
文件格式:.zip
开发语言:Java
更新时间:2017-07-06
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

package jwzhangjie.com.webviewandjs;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = (WebView)findViewById(R.id.webView);
        initWebView();
    }

    private void initWebView(){
        //设置编码
        webView.getSettings().setDefaultTextEncodingName("utf-8");
        //支持js
        webView.getSettings().setJavaScriptEnabled(true);
        //设置监听事件
        webView.setWebViewClient(new JieWewViewClient());
        //设置本地调用对象及其接口
        webView.addJavascriptInterface(new JavaScriptObject(getApplicationContext()), "toAndroid");
        //载入js
        webView.loadUrl("file:///android_asset/index.html");
    }

    public void javaCallJsNoParams(View view){
        webView.loadUrl("javascript:javaCallJsNoParamsMethod()");
    }

    public void javaCallJsHasParams(View view){
        webView.loadUrl("javascript:javaCallJsHasParamsMethod('"   123   "')");
    }

    public class JavaScriptObject {

        Context mContxt;

        public JavaScriptObject(Context mContxt) {
            this.mContxt = mContxt;
        }

        @JavascriptInterface //sdk17版本以上加上注解
        public void jsCallJavaNoParams() {
            Toast.makeText(mContxt, "Js调用Java方法(无参)", Toast.LENGTH_LONG).show();
        }

        @JavascriptInterface //sdk17版本以上加上注解
        public void jsCallJavaHasParams(String params) {
            Toast.makeText(mContxt, "Js调用Java方法(有参):"   params, Toast.LENGTH_SHORT).show();
        }
    }

    class JieWewViewClient extends WebViewClient{
        /**
         *  如果紧跟着
         *  webView.loadUrl("file:///android_asset/index.html");
         *  调用Js中的方法是不起作用的,必须页面加载完成才可以
         */

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webView.loadUrl("javascript:javaCallJsHasParamsMethod('"   123   "')");
        }
    }

}