WebViewファイルのダウンロード
このセクションの概要
このセクションでは、UC などの一般的なブラウザを使用する場合の WebView のファイルのダウンロードに関する知識ポイントを紹介します。 ダウンロード リンクをクリックすると、ブラウザのようなコンポーネントとして WebView がダウンロードされます。 もちろん、ダウンロードもサポートされており、ダウンロードプロセスを自分で記述し、ダウンロードしたファイルをどこに置くか、使用するファイル名を設定できます。 保存はもちろん、Chrome や UC などの他の組み込みブラウザを呼び出してダウンロードすることもできます。 使い方をご紹介します!
1. 他のブラウザを呼び出してファイルをダウンロードします:
これは非常に簡単です。WebView に setDownloadListener を設定して、DownloadListener を書き直すだけです。 onDownloadStart に Intent を記述し、Activity に対応する Activity を開始します。
キーコードは次のとおりです:
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); } });
携帯電話に複数のブラウザがある場合は、ダウンロードするブラウザの1つを選択するためのダイアログボックスが開きます~
2. 独自のスレッドを作成します。ファイルをダウンロードします
もちろん、ダウンロードしたファイルをデフォルトのパスに置きたくない場合や、ファイル名を自分で定義したい場合などがあります。自分で記述することもできます。 ファイルをダウンロードするスレッド、実装例のコードは次のとおりです:
コア コード:
別のダウンロード スレッド クラスを自分で作成します:
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", "下载完毕~~~~"); } }
次に、このスレッドを作成して開始します: 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();
}
});
:
SDカードを開くと、ダウンロードされたファイルがSDカードに静かに眠っていることがわかります:
メモ:それでは、さらに、 SD カードの読み取りおよび書き込み権限と、ネットワークへのインターネット アクセスの権限を忘れずに書き込むようにしてください:
また、 conn がすべてを設定した後に、
in = conn.getInputStream(); を書き込む必要があります。 !そうしないと何も読めなくなるので注意してください。
このセクションの概要:このセクションは非常に単純です。コードは投稿されません。実際には、setDownloadListener です。自分で書き直してください。 onDownloadStart メソッドは、ダウンロード プロセスを処理するためにのみ使用されます~、このセクションは以上です、ありがとう~