WebView的使用(一)

来源:互联网 发布:淘宝布料 编辑:程序博客网 时间:2024/05/17 22:50

自定义WebView的title

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    app:layout_behavior="@string/appbar_scrolling_view_behavior"    tools:context="com.example.web_01.MainActivity"    tools:showIn="@layout/activity_main">    <RelativeLayout        android:id="@+id/web_title_layout"        android:layout_width="match_parent"        android:layout_height="50dp">        <Button            android:id="@+id/back"            android:layout_alignParentLeft="true"            android:layout_width="wrap_content"            android:layout_height="40dp"            android:text="返回"/>        <TextView            android:id="@+id/title"            android:layout_centerInParent="true"            android:layout_width="wrap_content"            android:layout_height="wrap_content" />        <Button            android:id="@+id/refresh"            android:layout_alignParentRight="true"            android:layout_width="wrap_content"            android:layout_height="40dp"            android:text="刷新"/>    </RelativeLayout>    <WebView        android:layout_below="@id/web_title_layout"        android:id="@+id/webView"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>



MainActivity

public class MainActivity extends AppCompatActivity {    private WebView webView;    private Button back;    private Button refresh;    private TextView titleView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.webView);        // 默认调用系统浏览器打开网页        webView.loadUrl("http://www.baidu.com");        back = (Button) findViewById(R.id.back);        refresh = (Button) findViewById(R.id.refresh);        titleView = (TextView) findViewById(R.id.title);        webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onReceivedTitle(WebView view, String title) {                titleView.setText(title);                super.onReceivedTitle(view, title);            }        });        // 直接打开网页 而不是去调用系统的浏览器打开        webView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });        refresh.setOnClickListener(new MyListener());        back.setOnClickListener(new MyListener());    }    class MyListener implements View.OnClickListener {        @Override        public void onClick(View v) {            switch (v.getId()) {                case R.id.refresh:                    webView.reload();                    break;                case R.id.back:                    finish();                    break;            }        }    }}




用WebView下载文件


HttpThread.java

public class HttpThread extends Thread {    private String mUrl;    public HttpThread(String url) {        this.mUrl = url;    }    @Override    public void run() {        try {            System.out.println("start download");            URL httpUrl = new URL(mUrl);            HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();            conn.setDoInput(true);//            conn.setDoOutput(true);            conn.setRequestMethod("GET");            InputStream in = conn.getInputStream();            File downloadFile;            File sdFile;            FileOutputStream out = null;            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {                downloadFile = Environment.getExternalStorageDirectory();                sdFile = new File(downloadFile, "test.apk");                out = new FileOutputStream(sdFile);            }            byte[] b = new byte[6 * 1024];            int len;            while ((len = in.read(b)) != -1) {                if (out != null) {                    out.write(b, 0, len);                }            }            if (out != null) {                out.close();            }            if (in != null) {                in.close();            }            System.out.println("download success");        } catch (IOException e) {            e.printStackTrace();        }    }}



MainActivity

public class MainActivity extends AppCompatActivity {    private WebView webView;    private Button back;    private Button refresh;    private TextView titleView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.webView);        // 默认调用系统浏览器打开网页//        webView.loadUrl("http://www.baidu.com");        webView.loadUrl("http://apk.hiapk.com/");        back = (Button) findViewById(R.id.back);        refresh = (Button) findViewById(R.id.refresh);        titleView = (TextView) findViewById(R.id.title);        webView.setWebChromeClient(new WebChromeClient() {            @Override            public void onReceivedTitle(WebView view, String title) {                titleView.setText(title);                super.onReceivedTitle(view, title);            }        });        // 直接打开网页 而不是去调用系统的浏览器打开        webView.setWebViewClient(new WebViewClient() {            @Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl(url);                return super.shouldOverrideUrlLoading(view, url);            }        });        webView.setDownloadListener(new MyDownload());        refresh.setOnClickListener(new MyListener());        back.setOnClickListener(new MyListener());    }    class MyListener implements View.OnClickListener {        @Override        public void onClick(View v) {            switch (v.getId()) {                case R.id.refresh:                    webView.reload();                    break;                case R.id.back:                    finish();                    break;            }        }    }    class MyDownload implements DownloadListener {        @Override        public void onDownloadStart(String url, String userAgent, String contentDisposition,                                    String mimetype, long contentLength) {            System.out.println("url------------>" + url);            if (url.endsWith(".apk")) {                new HttpThread(url).start();            }        }    }}






0 0