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

来源:互联网 发布:工作备忘录 软件 编辑:程序博客网 时间:2024/05/16 13:57

webView的简单使用:

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

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


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