رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

دانلود فایل از اینترنت و نمایش در برنامه ی اندروید


پست های پیشنهاد شده

سلام

لطفا اساتید راهنمایی کنند...

من از کد زیر برای دانلود فایل mp3 استفاده می کنم و مشکلی که دارم این هست که برنامه در شبیه ساز درست کار می کنه ولی در گوشی (اندروید 6) درست کار نمی کنه!!! یعنی نه پوشه ای می سازه و نه فایل رو دانلود می کنه...

اینم کدی که استفاده می کنم....

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.widget.TextView;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class test extends Activity {

   public static final String LOG_TAG = "Android Downloader by The Code Of A Ninja";

   //initialize our progress dialog/bar
   private ProgressDialog mProgressDialog;
   public static final int DIALOG_DOWNLOAD_PROGRESS = 0;

   //initialize root directory
   File rootDir = Environment.getExternalStorageDirectory();

   //defining file name and url
   public String fileName = "097_ghadr.mp3";
   public String fileURL = "http://gmi.zgig.in/download/097_ghadr.mp3";

   @Override
   public void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       //setting some display
       setContentView(R.layout.test);
       TextView tv = new TextView(this);
       tv.setText("Android Download File With Progress Bar");

       //making sure the download directory exists
       checkAndCreateDirectory("/my_downloads");

       //executing the asynctask
       new DownloadFileAsync().execute(fileURL);
   }

   //this is our download file asynctask
   class DownloadFileAsync extends AsyncTask {

       @Override
       protected void onPreExecute() {
           super.onPreExecute();
           showDialog(DIALOG_DOWNLOAD_PROGRESS);
       }


       @Override
       protected String doInBackground(String... aurl) {

           try {
               //connecting to url
               URL u = new URL(fileURL);
               HttpURLConnection c = (HttpURLConnection) u.openConnection();
               c.setRequestMethod("GET");
               c.setDoOutput(true);
               c.connect();

               //lenghtOfFile is used for calculating download progress
               int lenghtOfFile = c.getContentLength();

               //this is where the file will be seen after the download
               FileOutputStream f = new FileOutputStream(new File(rootDir + "/my_downloads/", fileName));
               //file input is from the url
               InputStream in = c.getInputStream();

               //here’s the download code
               byte[] buffer = new byte[1024];
               int len1 = 0;
               long total = 0;

               while ((len1 = in.read(buffer)) > 0) {
                   total += len1; //total = total + len1
                   publishProgress(""+ (int)((total*100)/lenghtOfFile));
                   f.write(buffer, 0, len1);
               }
               f.close();

           } catch (Exception e) {
               Log.d(LOG_TAG, e.getMessage());
           }

           return null;
       }

       protected void onProgressUpdate(String... progress) {
           Log.d(LOG_TAG,progress[0]);
           mProgressDialog.setProgress(Integer.parseInt(progress[0]));
       }

       @Override
       protected void onPostExecute(String unused) {
           //dismiss the dialog after the file was downloaded
           dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
       }
   }

   //function to verify if directory exists
   public void checkAndCreateDirectory(String dirName){
       File new_dir = new File( rootDir + dirName );
       if( !new_dir.exists() ){
           new_dir.mkdirs();
       }
   }

   //our progress bar settings
   @Override
   protected Dialog onCreateDialog(int id) {
       switch (id) {
           case DIALOG_DOWNLOAD_PROGRESS: //we set this to 0
               mProgressDialog = new ProgressDialog(this);
               mProgressDialog.setMessage("Downloading file...");
               mProgressDialog.setIndeterminate(false);
               mProgressDialog.setMax(100);
               mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
               mProgressDialog.setCancelable(true);
               mProgressDialog.show();
               return mProgressDialog;
           default:
               return null;
       }
   }
}

لینک ارسال
به اشتراک گذاری در سایت های دیگر

Environment.getExternalStorageDirectory();

قبلا که همچین پروژه ای داشتم خوندم که برای اندروید 6 به بعد مسیر ذخیره فایل عوض شده و شما باید در پوشه android و زیرپوشه فولدر پکیج برنامه تان قرار بگیرد.

یه نگاهی توی فولدر اندروید بنداز و فولدر پکیج های برنامه های پیش فرض رو یه نگاهی بنداز

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنونممشکلی که هست همینه که

 اولا اصلا فولدر پکیچ ساخته نمیشه

دوما فایل دانلود نمیشه... یعنی progressbar میاد و حدودا 10 بیست ثانیه هست ولی پر نمی شه و بعد هم میره...

اگه می شه بیشتر راهنمایی کنید...

در اندروید 6 راه حلش چیه؟ اگه می شه کدی که باید عوض بشه یا کامل بشه رو مشخص کنید...

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 سال بعد...

از نسخه ۶ به بعد باید مجوز دسترسی در حال اجرا رو به برنامه بدی که جواب بده,  مثل تلگرام که وقتی میخوایی واسه بار اول عکس بفرستی مجوز دسترسی به فایل ها رو ازت میخواد

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 2 ماه بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...