#android #web #input #io #download
#Android #веб #ввод #io #Скачать
Вопрос:
способ загрузки каждого файла для каждой кнопки-Android
У меня есть какая-то кнопка в моем макете, и я хочу загружать разные файлы нажатием каждой кнопки для первой кнопки, у меня нет проблем с загрузкой файла (только когда я определяю полный путь вывода, он не загружает пример: Environment.getExternalStorageDirectory ().getAbsolutePath () «/ sound / cat.mp3»); и вторая проблема в том, как установить метод для кнопки secend? должен ли я использовать like startDownload(); в первой кнопке?(у меня разные файлы!)
package com.ahmado.testconnection;
import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
public class Test extends Activity {
public static final int DIALOG_DOWNLOAD_PROGRESS = 0;
private Button startBtn;
private ProgressDialog mProgressDialog;
private String URLDownload;
private EditText txtURL;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
// Permission StrictMode
/*if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}*/
// btnDownload
startBtn = (Button) findViewById(R.id.btnDownload);
startBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startDownload();
}
});
}
private void startDownload() {
// editText1
ImageView IV=(ImageView)findViewById(R.id.imageView1);
txtURL = (EditText) findViewById(R.id.editText1);
URLDownload = txtURL.getText().toString();
URLDownload = "http://uploadco.ir/uploads/k3f5im6vdhv31zfg6ry.jpg";
/* if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONYCOMB) {
}*/
new DownloadFileAsync().execute(URLDownload);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_DOWNLOAD_PROGRESS:
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("دانلود فایل...........");
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]);
HttpURLConnection conexion = (HttpURLConnection) url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Lenght of file: " lenghtOfFile);
InputStream input = new BufferedInputStream(url.openStream());
// Get File Name from URL
String fileName = URLDownload.substring(URLDownload.lastIndexOf('/') 1, URLDownload.length());
File k = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "sending");
OutputStream output = new FileOutputStream(k);
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);
}
Log.d("ANDRO_ASYNC", "end download ");
output.flush();
output.close();
input.close();
}
catch (Exception e) {}
return null;
}
@Override
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);
}
}
}
Комментарии:
1.
i do not have problem it download the file (just when i determine full out put path it does not download example
что вы имеете в виду? Я не понимаю. Сохраняется ли это в файл? Конечно, вы можете использовать больше кнопок и использовать ту же asynctask. Определите файл k перед запуском задачи и передайте в качестве параметра.2. я имею в виду, какой метод мне следует использовать для второй загрузки?
3. Для первой кнопки используйте новый DownloadFileAsync().выполнить(URLDownload1);. Для второго нового DownloadFileAsync().выполнить(URLDownload2);. Для третьей новой загрузки fileasync().выполнить(URLDownload3);. И так далее. В асинхронной задаче замените «отправку» именем файла.
4. Если я заменю «отправку» на имя файла urldownload2, то при нажатии первой кнопки он запишет второй файл на sdcard?