Muat turun fail WebView
Pengenalan kepada bahagian ini
Bahagian ini memperkenalkan anda kepada titik pengetahuan memuat turun fail WebView Apabila kami menggunakan penyemak imbas biasa, seperti UC, Apabila kita mengklik pada pautan muat turun, ia akan dimuat turun Sebagai komponen seperti pelayar, WebView Sudah tentu, muat turun juga disokong Kami boleh menulis sendiri proses muat turun, menetapkan tempat untuk meletakkan fail yang dimuat turun, dan nama fail yang hendak digunakan. Simpan, sudah tentu anda juga boleh memanggil penyemak imbas terbina dalam lain untuk memuat turun, seperti Chrome, UC, dsb.! Biar saya tunjukkan cara menggunakannya!
1. Panggil penyemak imbas lain untuk memuat turun fail:
Ini sangat mudah, kita hanya perlu menetapkan setDownloadListener untuk WebView, dan kemudian tulis semula DownloadListener onDownloadStart, kemudian tulis Niat di dalamnya, dan kemudian mulakan Aktiviti yang sepadan dengan Aktiviti!
Kod kunci adalah seperti berikut:
wView.setDownloadListener(new DownloadListener(){ @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Log.e("HEHE","开始下载"); Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW,uri); startActivity(intent); } });
Jika terdapat berbilang penyemak imbas dalam telefon anda, kotak dialog akan dibuka untuk anda memilih salah satu daripada pelayar. Muat turun~
2 Tulis urutan anda sendiri untuk memuat turun fail
Sudah tentu, anda mungkin tidak mahu meletakkan fail yang dimuat turun dalam laluan lalai, atau anda mungkin mahu menentukan sendiri nama fail, dsb. Anda boleh menulisnya sendiri Satu utas untuk memuat turun fail, kod contoh pelaksanaan adalah seperti berikut:
Kod teras :
Kami menulis sendiri kelas muat turun yang lain:
DownLoadThread.java
/** * Created by Jay on 2015/9/14 0014. */ public class DownLoadThread implements Runnable { private String dlUrl; public DownLoadThread(String dlUrl) { this.dlUrl = dlUrl; } @Override public void run() { Log.e("HEHE", "开始下载~~~~~"); InputStream in = null; FileOutputStream fout = null; try { URL httpUrl = new URL(dlUrl); HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); in = conn.getInputStream(); File downloadFile, sdFile; if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Log.e("HEHE","SD卡可写"); downloadFile = Environment.getExternalStorageDirectory(); sdFile = new File(downloadFile, "csdn_client.apk"); fout = new FileOutputStream(sdFile); }else{ Log.e("HEHE","SD卡不存在或者不可读写"); } byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) != -1) { fout.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (fout != null) { try { fout.close(); } catch (IOException e) { e.printStackTrace(); } } } Log.e("HEHE", "下载完毕~~~~"); } }
Kemudian buat dan mulakan thread dalam MainActivity.java:
wView.setDownloadListener(new DownloadListener(){ @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Log.e("HEHE","onDownloadStart被调用:下载链接:" + url); new Thread(new DownLoadThread(url)).start(); } });
Hasil berjalan :
Apabila kita membuka kad SD, kita dapat melihat bahawa fail yang dimuat turun sudah terbaring senyap dalam kad SD:
Nota:
Baiklah, sebagai tambahan, jangan lupa kebenaran baca dan tulis untuk kad SD dan kebenaran untuk akses Internet ke rangkaian:
Juga, in = conn.getInputStream(); hendaklah ditulis selepas conn telah menyediakan segala-galanya! ! Ingat, jika tidak, anda tidak akan dapat membaca apa-apa!
Ringkasan bahagian ini:
Bahagian ini sangat mudah, kod itu tidak akan disiarkan Malah, ia ditetapkanDownloadListener, tulis semula sendiri Kaedah onDownloadStart hanya digunakan untuk mengendalikan proses muat turun~, itu sahaja untuk bahagian ini, terima kasih~