AndroidプログラミングはWebViewを使ってファイルダウンロード機能を実現する2つの方法
4215 ワード
この例では、AndroidプログラミングがWebViewを使用してファイルダウンロード機能を実現する2つの方法について説明します.皆さんの参考にしてください.具体的には以下の通りです.
アプリケーションでは、通常ファイルダウンロード機能が使用されます.一般的には、非同期タスクでダウンロード機能を実行するダウンロード操作ツールクラスを書きます.
今日はWebViewのファイルダウンロード機能の使い方を見てみましょう!
メソッド1、ダウンロード操作のカスタマイズ
1.レイアウト
2.カスタムダウンロードツール操作非同期スレッドクラスを実現する:
3.ファイルのダウンロード
方法2:システム自身でダウンロードする(通知欄にダウンロード進捗バーが表示される)
この方法を次のように書き換えるだけです.
Androidに関する詳細に興味のある方は、「Androidファイル操作テクニック要約」、「AndroidビューViewテクニックまとめ」、「Androidプログラミングのactivity操作テクニックまとめ」、「Androidレイアウトlayoutテクニックまとめ」、「Android開発入門と進級チュートリアル」、「Androidリソース操作テクニック要約」および「Androidコントロールの使い方まとめ」
この文書がAndroidプログラムの設計に役立つことを願っています.
アプリケーションでは、通常ファイルダウンロード機能が使用されます.一般的には、非同期タスクでダウンロード機能を実行するダウンロード操作ツールクラスを書きます.
今日は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プログラムの設計に役立つことを願っています.