1. 程式人生 > >android中webView JS呼叫Android的方法、webView的下拉重新整理(SwipeRefreshLayout)、下載檔案

android中webView JS呼叫Android的方法、webView的下拉重新整理(SwipeRefreshLayout)、下載檔案

最近一直在寫webView的東西,發現有好多功能點,記一下。

JS呼叫Android的方法:

在JS中:寫 window.JavaScriptinterface.closecurrent();   
在Adnriod中:
    webView.addJavascriptInterface(new backJS(), "JavaScriptinterface");
注意:new backJS()名字可以隨意取,“JavaScriptinterface”對應JS
    class backJS {

        //沒有返回引數
        @JavascriptInterface
public void closeCurrentWin() { //內容為要呼叫的方法 } //返回一個String型別引數 @JavascriptInterface public void closeCurrentWin(String flash) { //內容為要呼叫的方法 } }

webView下拉重新整理(SwipeRefreshLayout)

使用android.support.v4.widget.SwipeRefreshLayout進行下拉重新整理,如果使用過程中找不到包報錯,替換一下support.v4就好了,也可以點選連結下載直接替換

1、xml

 <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_container_links"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <WebView
            android:id="@+id/webView_link"
            android:layout_width="match_parent"
android:layout_height="match_parent" android:scrollbars="none" /> </android.support.v4.widget.SwipeRefreshLayout>

2、初始化 (設定監聽和進度條顏色)

swipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container_links);
        swipeLayout.setOnRefreshListener(this);
        swipeLayout.setColorScheme(R.color.greys_1, R.color.greys_2,
                R.color.greys_3, R.color.greys_4);

3、重新整理

    @Override
    public void onRefresh() {
        // 重新重新整理頁面
        webView_link.loadUrl(webView_link.getUrl());
    }

下載檔案

1、設定監聽
webView.setDownloadListener(new MyWebViewDownLoadListener());
2、下載到sd卡的指定目錄
    private class MyWebViewDownLoadListener implements DownloadListener {

        @Override
        public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,

                long contentLength) {

            if (!Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {

                Toast t = Toast.makeText(LinkActivity.this, "需要SD卡。",
                        Toast.LENGTH_LONG);

                t.setGravity(Gravity.CENTER, 0, 0);

                t.show();

                return;

            }
            loadFiles(upUrl);//根據URl下載即可


        }
    }

注意:在使用webView上傳圖片時,正常是單張上傳,若想同時上傳多個圖片,要自定義,同時JS中寫個按鈕,