AndroidプログラミングはWebViewを使ってファイルダウンロード機能を実現する2つの方法

4215 ワード

この例では、AndroidプログラミングがWebViewを使用してファイルダウンロード機能を実現する2つの方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
アプリケーションでは、通常ファイルダウンロード機能が使用されます.一般的には、非同期タスクでダウンロード機能を実行するダウンロード操作ツールクラスを書きます.
今日はWebViewのファイルダウンロード機能の使い方を見てみましょう!
メソッド1、ダウンロード操作のカスタマイズ
1.レイアウト






2.カスタムダウンロードツール操作非同期スレッドクラスを実現する:

public class DownLoadThread extends Thread {
private String downLoadUrl;
private Context context;
private FileOutputStream out = null;
private File downLoadFile = null;
private File sdCardFile = null;
private InputStream in = null;
public DownLoadThread(String downLoadUrl, Context context) {
super();
this.downLoadUrl = downLoadUrl;
this.context = context;
}
@Override
public void run() {
try {
URL httpUrl = new URL(downLoadUrl);
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
 conn.setDoInput(true);//        URL       ,   DoInput       true;       ,     false。     true。
conn.setDoOutput(true);//       
 URL       ,   DoOutput       true;       ,     false。     false。
in = conn.getInputStream();
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
 Toast.makeText(context, "SD    !", Toast.LENGTH_SHORT).show();
return;
}
downLoadFile = Environment.getExternalStorageDirectory();
sdCardFile = new File(downLoadFile, "download.apk");
out = new FileOutputStream(sdCardFile);
byte[] b = new byte[1024];
int len;
while ((len = in.read(b)) != -1) {
out.write(b, 0, len);
}
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
 }
}


3.ファイルのダウンロード

public class MainActivity extends Activity {
private WebView test_wv;
private String downLoadUrl = "http://as.baidu.com/a/rank?cid=101&s=1&f=web_alad";
 @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.test_wv
 = (WebView) findViewById(R.id.test_wv);
test_wv.loadUrl(downLoadUrl);
test_wv.setWebViewClient(new WebViewClient()
 {
@Override
public boolean shouldOverrideUrlLoading(WebView
 view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
});
//   WebView    ,       ok
test_wv.setDownloadListener(new
 DownloadListener() {
@Override
public void onDownloadStart(String
 url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Log.v("ldm", url);
if (url.endsWith(".apk")) {//     .apk       
new DownLoadThread(url, MainActivity.this).start();
}
}
});
}
}


方法2:システム自身でダウンロードする(通知欄にダウンロード進捗バーが表示される)
この方法を次のように書き換えるだけです.

test_wv.setDownloadListener(new
 DownloadListener() {
@Override
public
 void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Log.v("ldm",
 url);
Uri
 uri=Uri.parse(url);
Intent
 intent=new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});


Androidに関する詳細に興味のある方は、「Androidファイル操作テクニック要約」、「AndroidビューViewテクニックまとめ」、「Androidプログラミングのactivity操作テクニックまとめ」、「Androidレイアウトlayoutテクニックまとめ」、「Android開発入門と進級チュートリアル」、「Androidリソース操作テクニック要約」および「Androidコントロールの使い方まとめ」
この文書がAndroidプログラムの設計に役立つことを願っています.