android中加载webview以及与JS的交互

webView的简单使用:

1、在xml文件里布局webView控件,并按照自己的要求进行排版。

    android:id="@+id/webview"
    android:scrollbars="none"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


2、webView的使用以及设置属性

webView = ((WebView) findViewById(R.id.webView));
webView.loadUrl("file:///android_asset/test.html");//访问本工程下assets下的html文件
webView.loadUrl("http://www.baidu.com");//加载一个网页
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);//Android中的WebView默认是不响应JavaScript控件的,设置支持响应
settings.setSupportZoom(true);//设置支持缩放,仅支持双击效果
settings.setBuiltInZoomControls(true);//设置支持缩放,支持触摸缩放,设置此属性默认setSupportZoom(true)
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//把所有内容放大webview等宽的一列中
settings.setLoadWithOverviewMode(true);//设置自适应屏幕
settings.setUseWideViewPort(true);//扩大等比缩放
settings.setDisplayZoomControls(false);//缩放按钮隐藏


3、Java与JavaScript的交互:

android中调用JS:

webView .loadUrl("javascript:backAction()");//backAction()为js中的一个方法,你也可以调用其他方法,也就是android调用其他方法
JS调用android:

/**JS中调用:代码中“common”是android中指定的调用名称,
//copyGotoApp()是RequestApprovalJavaScript()
* 跳转app原生页面 */ function copyGotoApp() { if ($.versions.android) { window.common.copyGotoApp(); } else if ($.versions.ios) {}}
android中指定调用名称和方法:
webView .addJavascriptInterface(new RequestApprovalJavaScript(this), "common");
RequestApprovalJavaScript类为:
public class RequestApprovalJavaScript {
    Context mContext;

    public RequestApprovalJavaScript(Context context) {
        mContext = context;
    }

    /**
     * 与js交互时用到的方法,在js里直接调用的
     */
    @JavascriptInterface
    public void backAction() {
        Toast.makeText(mContext, "调用", Toast.LENGTH_SHORT).show();
    }

    /**
     * 调用选择人员部门
     */
    @JavascriptInterface
    public void copyGotoApp() {
        //JS调用此方法跳转页面
        Intent intent = new Intent(mContext, SelectPersonOrDepartmentActivity.class);
        ApprovalActivity approvalActivity = (ApprovalActivity) mContext;
        approvalActivity.startActivityForResult(intent, ApprovalActivity.requestCode);
    }

//        @JavascriptInterface
//        public void replaceGotoApp() {
//            Intent intent = new Intent(MineApprovalActivity.this, SelectPersonOrDepartmentActivity.class);
//            startActivityForResult(intent, requestCode);
//        }

}
注:类中方法应加上 @JavascriptInterface

你可能感兴趣的:(android中加载webview以及与JS的交互)