Android中用webView引用js

第一步:使用WebView组件

<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

第二步:assets文件夹放对应HTML文件或js文件

第三步:引用

webView = findViewById(R.id.webView);

//相关属性设置
WebSettings webSettings = webView.getSettings();
//是否支持JavaScript
webSettings.setJavaScriptEnabled(true);
// 开启DOM storage API 功能
webSettings.setDomStorageEnabled(true);
// 启动缓存
webSettings.setAppCacheEnabled(true);
// 设置缓存模式
webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
webSettings.setDefaultTextEncodingName("utf-8");// 设置字符编码
webSettings.setLoadWithOverviewMode(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setAllowFileAccess(true);// 设置允许访问文件数据
webSettings.setAllowFileAccessFromFileURLs(true);
//关于setWebChromeClient的用法可以自己百度
webView.setWebChromeClient(new WebChromeClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        super.onProgressChanged(view, newProgress);
       //页面加载进度条
        if (newProgress >= 100) { 
               //可以对页面数据进行加载
            }
        }
    }

    //拦截js alert()弹框
    @Override
    public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
        AlertDialog.Builder b2 = new AlertDialog.Builder(MapActivity.this);
        b2.setTitle("提示");
        b2.setMessage(message);
        b2.setPositiveButton("ok", new AlertDialog.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                result.confirm();
            }
        });
        b2.setCancelable(false);
        b2.create();
        b2.show();
        return true;
    }
});
webView.loadUrl(“file:///android_asset/map/html/index.html”);//webview页面加载,到此为止,页面加载完成
//js调用Android方法
webView.addJavascriptInterface(new MapJsApi(this), "androidView"); //对JS提供方法进行注册

//android 调用js方法

String call = "javascript:ys.home.map.cancelDraw()"; //直接去map中的方法

String call = "javascript:addElementLine('" + element.getPosition() + "','" + MapConstant.DC_LINE_LAYER_NAME + element.getName() + "','" + CoordinateUtil.convertDFMToDu(longtitude) + "','" + CoordinateUtil.convertDFMToDu(latitude)
        + "','" + element.getTableType() + "','" + element.getHeritageId() + "','" + element.getFieldID() + "','" + element.getUniformNumber() + "','firebrick',3)";//复杂参数调用单引号包双引号

call = "javascript:clearFeaturesByLayerName('test1')"; //在init.js中有申明

webView.loadUrl(call);

猜你喜欢

转载自blog.csdn.net/sunqihui22/article/details/100130971