使用AsyncTask下载文件

使用AsyncTask下载文件,第1张

使用AsyncTask下载文件

我只运行了您的代码,它对我来说很好用。该图像已下载到sdcard。

请注意,请确保在AndroidManifest.xml中设置了以下权限:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这是我得到的日志(请注意,我添加了

ProgressDialog
):

03-21 16:53:46.422  21017-21017/com.imagedownload.danielnugent.imagedownload D/Activity﹕ #1 setTransGradationModeColor false03-21 16:53:56.211  21017-21017/com.imagedownload.danielnugent.imagedownload D/Activity﹕ #1 setTransGradationModeColor false03-21 16:54:06.441  21017-21017/com.imagedownload.danielnugent.imagedownload I/System.out﹕ Starting download03-21 16:54:06.441  21017-21017/com.imagedownload.danielnugent.imagedownload D/Dialog﹕ checkMirrorlinkEnabled returns : false03-21 16:54:06.441  21017-21017/com.imagedownload.danielnugent.imagedownload D/Dialog﹕ showing allowed03-21 16:54:06.461  21017-25126/com.imagedownload.danielnugent.imagedownload I/System.out﹕ Downloading03-21 16:54:06.461  21017-21017/com.imagedownload.danielnugent.imagedownload D/Activity﹕ #1 setTransGradationModeColor false03-21 16:54:06.481  21017-21017/com.imagedownload.danielnugent.imagedownload D/ProgressBar﹕ updateDrawableBounds: left = 003-21 16:54:06.481  21017-21017/com.imagedownload.danielnugent.imagedownload D/ProgressBar﹕ updateDrawableBounds: top = 003-21 16:54:06.491  21017-21017/com.imagedownload.danielnugent.imagedownload D/ProgressBar﹕ updateDrawableBounds: right = 14403-21 16:54:06.491  21017-21017/com.imagedownload.danielnugent.imagedownload D/ProgressBar﹕ updateDrawableBounds: bottom = 14403-21 16:54:11.596  21017-21017/com.imagedownload.danielnugent.imagedownload I/System.out﹕ Downloaded

万一这很有用,这是对我有用的完整MainActivity.java代码。(URL是一个占位符):

import android.app.ProgressDialog;import android.os.AsyncTask;import android.os.Environment;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import java.io.BufferedInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URL;import java.net.URLConnection;public class MainActivity extends ActionBarActivity {    private ProgressDialog pDialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        new DownloadFileFromURL().execute("http://www.example.com/IMG.jpg");    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) { return true;        }        return super.onOptionsItemSelected(item);    }    class DownloadFileFromURL extends AsyncTask<String, String, String> {                @Override        protected void onPreExecute() { super.onPreExecute(); System.out.println("Starting download"); pDialog = new ProgressDialog(MainActivity.this); pDialog.setMessage("Loading... Please wait..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show();        }                @Override        protected String doInBackground(String... f_url) { int count; try {     String root = Environment.getExternalStorageDirectory().toString();     System.out.println("Downloading");     URL url = new URL(f_url[0]);     URLConnection conection = url.openConnection();     conection.connect();     // getting file length     int lenghtOfFile = conection.getContentLength();     // input stream to read file - with 8k buffer     InputStream input = new BufferedInputStream(url.openStream(), 8192);     // Output stream to write file     OutputStream output = new FileOutputStream(root+"/downloadedfile.jpg");     byte data[] = new byte[1024];     long total = 0;     while ((count = input.read(data)) != -1) {         total += count;         // writing data to file         output.write(data, 0, count);     }     // flushing output     output.flush();     // closing streams     output.close();     input.close(); } catch (Exception e) {     Log.e("Error: ", e.getMessage()); } return null;        }                @Override        protected void onPostExecute(String file_url) { System.out.println("Downloaded"); pDialog.dismiss();        }    }}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5616050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存