android 网络程序下载,Android之网络文件下载
環(huán)境搭建:
本地服務(wù)器(下載wamp【W(wǎng)indows, Apache, MySQL, PHP 】,安裝即可,然后將網(wǎng)頁或文件放進 www directory)
虛擬機(訪問本地服務(wù)器的ip:10.0.2.2)
注意事項:
權(quán)限相關(guān)
網(wǎng)絡(luò)訪問 存儲卡訪問
文件權(quán)限 如:chmod? 777 /data
源代碼:
package com.example.net_ex04;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
ProgressBar progressBar;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar)this.findViewById(R.id.progressBar1);
Button button = (Button)this.findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
String url = "http://10.0.2.2/Music.flv";
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressBar.setVisibility(View.VISIBLE);
progressBar.setProgress(0);
new DownloadTask().execute(url);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class DownloadTask extends AsyncTask{
public DownloadTask() {
// TODO Auto-generated constructor stub
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
HttpGet httpRequest = new HttpGet(params[0]);
HttpClient httpClient = new DefaultHttpClient();
try{
HttpResponse httpResponse = httpClient.execute(httpRequest);
HttpEntity entity = httpResponse.getEntity();
long length = entity.getContentLength();
progressBar.setMax((int)length);
InputStream inputStream = entity.getContent();
byte[] b = new byte[1024];
int readedLength = -1;
//File file = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), "Music.flv");
File file = new File("/data/Music.flv");
if(!file.exists())
{
file.createNewFile();
}
OutputStream outputStream = new FileOutputStream(file);
int count = 0;
while((readedLength = inputStream.read(b)) != -1){
outputStream.write(b, 0, readedLength);
count += readedLength;
publishProgress(count);
}
}catch(ClientProtocolException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
return null;
}
protected void onProgressUpdate(Integer... values){
progressBar.setProgress(values[0]);
super.onProgressUpdate(values);
}
}
}
總結(jié)
以上是生活随笔為你收集整理的android 网络程序下载,Android之网络文件下载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 执行顺序_Java代码执行顺序
- 下一篇: 计算机英语论文摘要,求英语高手翻译论文摘