Android 中下载文件到sdcard和进度条小结
来源:互联网 发布:数组去空格 编辑:程序博客网 时间:2024/05/16 14:59
这里小结下,如何用android的模拟器去创建一个sdcard,并且学习如何在android中去下载一个网上的文件,保存到android,并且下 载时,会显示一个进度条.上述讲的就是我们这一篇代码要实现的内容。这篇内容其实是很重要的,大家可要好好的看了哦。
1 页面结构,提供一个button,点BUTTON时,去下载一个图片,main.xml设计如下:
Java代码:
- < ?xml version="1.0" encoding="utf-8"?>
- < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- < TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"
- />
- < Button
- android:text="Start long running task.."
- android:id="@+id/startBtn"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- < /Button>
- < /LinearLayout>
2 主程序
Java代码:
- package eoe.liao;
- import java.io.BufferedInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.URL;
- import java.net.URLConnection;
- import android.app.Activity;
- import android.app.Dialog;
- import android.app.ProgressDialog;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class AndroAsync extends Activity {
- public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
- private Button startBtn;
- private ProgressDialog mProgressDialog;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- startBtn = (Button)findViewById(R.id.startBtn);
- startBtn.setOnClickListener(new OnClickListener(){
- public void onClick(View v) {
- startDownload();
- }
- });
- }
- private void startDownload() {
- String url = "http://image-7.verycd.com/0d7596f5db7df1742236466dc91311b1435702(120x120)/thumb.jpg";
- new DownloadFileAsync().execute(url);
- }
- @Override
- protected Dialog onCreateDialog(int id) {
- switch (id) {
- case DIALOG_DOWNLOAD_PROGRESS:
- mProgressDialog = new ProgressDialog(this);
- mProgressDialog.setMessage("Downloading file..");
- mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- mProgressDialog.setCancelable(false);
- mProgressDialog.show();
- return mProgressDialog;
- default:
- return null;
- }
- }
- class DownloadFileAsync extends AsyncTask< String, String, String> {
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- showDialog(DIALOG_DOWNLOAD_PROGRESS);
- }
- @Override
- protected String doInBackground(String... aurl) {
- int count;
- try {
- URL url = new URL(aurl[0]);
- URLConnection conexion = url.openConnection();
- conexion.connect();
- int lenghtOfFile = conexion.getContentLength();
- Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);
- InputStream input = new BufferedInputStream(url.openStream());
- OutputStream output = new FileOutputStream("/sdcard/picture.jpg");
- byte data[] = new byte[1024];
- long total = 0;
- while ((count = input.read(data)) != -1) {
- total += count;
- publishProgress(""+(int)((total*100)/lenghtOfFile));
- output.write(data, 0, count);
- }
- output.flush();
- output.close();
- input.close();
- } catch (Exception e) {
- Log.e("error",e.getMessage().toString());
- System.out.println(e.getMessage().toString());
- }
- return null;
- }
- protected void onProgressUpdate(String... progress) {
- Log.d("ANDRO_ASYNC",progress[0]);
- mProgressDialog.setProgress(Integer.parseInt(progress[0]));
- }
- @Override
- protected void onPostExecute(String unused) {
- dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
- }
- }
- }
注意这里,在startdownload 方法中,调用了DownloadFileAsync内部类,这个内部类充分利用了AsyncTask的异步工作特性,是很方便 的,onProgressUpdate是让进度条完成后消失。最后,要记得在androidmanifest.xml中的< /application>后加入< uses-permission android:name="android.permission.INTERNET" />让能有访问互联网的能力.
- Android 中下载文件到sdcard和进度条小结
- Android 中下载文件到sdcard和进度条小结
- Android 中下载文件到sdcard和进度条小结
- android中下载文件到sdcard和进度条小结
- android中下载文件到SD卡的方法
- Android中下载文件并保存到SD卡
- 从虚拟机中下载文件到本地
- spring中下载文件
- tomcat 中下载文件
- Form中下载文件
- JSP中下载文件
- 从web工程中下载文件到本地硬盘
- 从网络Url中下载文件到本地
- java从hdfs中下载文件到本地
- 在android中如何从服务器上下载文件 并写入到 sdcard上去
- Android 从网络上下载文件以及写入到SDcard里面
- 从网络中下载文件,并且写入SDCARD根目录下,成功返回true,失败返回false
- ASP.NET中下载文件
- Checkstyle+Eclipse
- 转: SAP用户出口的类型 User Exit
- cygwin
- 情绪管理的方法
- Arcgis server的池化和非池化
- Android 中下载文件到sdcard和进度条小结
- SQL Server 2008的选择身份验证模式
- 开发者证书申请流程
- Windows XP上安装Live Writer
- tabs 标签切换
- 工作时间估算
- udev有可能出现的问题
- 强大的日志分析工具AWStats
- silverlight 学习视频