способ загрузки каждого файла для каждой кнопки-Android?

#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?