کلیدستان

نسخه‌ی کامل: دانلود با کلیک روی دکمه (در برنامه نویسی اندروید)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
درود به همه ی دوستان
در این لینک http://www.kelidestan.com/keys/keys.php?key=296 به خوبی یاد داده شده که چطور دانلود انجام بشه (با اجرای برنامه دانلود آغاز میشه).حالا اگر بخوایم همین دانلود از طریق کلیک روی دکمه انجام بشه باید چه تغییری بدیم تو این برنامه؟
setonclicklistener رو هرجا نوشتم خطا داد.لطفا راهنماییم کنین
سپاس
سلام.
ابتدا توصیه می کنم نگاهی به موضوع زیر بیندازید که در آن یک Download Manager نسبتا کامل را معرفی کرده ایم :

http://www.kelidestan.com/forum/showthread.php?tid=4963

اما در مورد سوال شما :
در کلید زیر، در مورد ساخت یک دکمه (Button) و تعیین کدهایی برای اجرا شدن در هنگام اشاره بر روی دکمه، توضیحاتی داده ایم :

کلید شماره 2728

مطابق آن باید یک Button را در فایل xml تعریف کنید و سپس کدهای Activity را تغییر بدهید.
فرض می کنیم که دکمه را در فایل xml تعریف کرده اید. اکنون قصد داریم که کدهای لازم در Activity را بنویسیم. در مبحث مربوط به دانلود، کدهای روش onCreate (که در واقع به محض اجرای Activity ، این کدها اجرا می شوند) را به صورت زیر نوشته ایم :

کد پی‌اچ‌پی:
@Override
         
protected void onCreate(Bundle savedInstanceState) {
                 
super.onCreate(savedInstanceState);
                 
setContentView(R.layout.activity_main);

                 
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 });
         } 

بنابراین کدهای مربوط به دانلود در روش onCreate ، کدهای زیر می باشند :

کد پی‌اچ‌پی:
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 }); 

پس کدهای Button به همراه کدهای فوق، به صورت زیر خواهد بود (در کل آنها را در روش onCreate) می نویسیم (که با اشاره بر روی Button ، کدهای دانلود اجرا شوند) :

کد پی‌اچ‌پی:
@Override
         
protected void onCreate(Bundle savedInstanceState) {
                 
super.onCreate(savedInstanceState);
                 
setContentView(R.layout.activity_main);

             
Button b = (ButtonfindViewById(R.id.button1);
             
b.setOnClickListener(new OnClickListener() {
                                  
             @
Override
             
public void onClick(View v) {
                 
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 });
             }
        }); 

بنابراین کدهای روش onCreate به صورت بالا تغییر داده می شود.

سپاسگزارم اینقدر وقت گذاشتین.مشکلم حل شد Smile)
(۱۳۹۳/۱۰/۱۲, ۰۲:۰۱ ب.ظ)'admin' نوشته: [ -> ]سلام.
ابتدا توصیه می کنم نگاهی به موضوع زیر بیندازید که در آن یک Download Manager نسبتا کامل را معرفی کرده ایم :

http://www.kelidestan.com/forum/showthread.php?tid=4963

اما در مورد سوال شما :
در کلید زیر، در مورد ساخت یک دکمه (Button) و تعیین کدهایی برای اجرا شدن در هنگام اشاره بر روی دکمه، توضیحاتی داده ایم :

کلید شماره 2728

مطابق آن باید یک Button را در فایل xml تعریف کنید و سپس کدهای Activity را تغییر بدهید.
فرض می کنیم که دکمه را در فایل xml تعریف کرده اید. اکنون قصد داریم که کدهای لازم در Activity را بنویسیم. در مبحث مربوط به دانلود، کدهای روش onCreate (که در واقع به محض اجرای Activity ، این کدها اجرا می شوند) را به صورت زیر نوشته ایم :

کد پی‌اچ‌پی:
@Override
         
protected void onCreate(Bundle savedInstanceState) {
                 
super.onCreate(savedInstanceState);
                 
setContentView(R.layout.activity_main);

                 
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 });
         } 

بنابراین کدهای مربوط به دانلود در روش onCreate ، کدهای زیر می باشند :

کد پی‌اچ‌پی:
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 }); 

پس کدهای Button به همراه کدهای فوق، به صورت زیر خواهد بود (در کل آنها را در روش onCreate) می نویسیم (که با اشاره بر روی Button ، کدهای دانلود اجرا شوند) :

کد پی‌اچ‌پی:
@Override
         
protected void onCreate(Bundle savedInstanceState) {
                 
super.onCreate(savedInstanceState);
                 
setContentView(R.layout.activity_main);

             
Button b = (ButtonfindViewById(R.id.button1);
             
b.setOnClickListener(new OnClickListener() {
                                  
             @
Override
             
public void onClick(View v) {
                 
// instantiate it within the onCreate method
                 
mProgressDialog = new ProgressDialog(MainActivity.this); // MainActivity = activity name
                 
mProgressDialog.setMessage("A message");
                 
mProgressDialog.setIndeterminate(true);
                 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                 
mProgressDialog.setCancelable(true);

                 
// execute this when the downloader must be fired
                 
final DownloadTask downloadTask = new DownloadTask(MainActivity.this); // MainActivity = activity name
                 
downloadTask.execute("http://www.kelidestan.com/file.apk"); // the url to the file you want to download
                 
                 
mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                     @
Override
                     
public void onCancel(DialogInterface dialog) {
                         
downloadTask.cancel(true);
                     }
                 });
             }
        }); 

بنابراین کدهای روش onCreate به صورت بالا تغییر داده می شود.



 
این که همش ارور downloadtask میده؟!!
سلام وخسته نباشید.مشکل دانلود رو حل کردم.البته اول یه خلاصه از ساختار برنامه بگم:
یه Main داریم با یه دکمه یا ایمیج باتن که با کلیک روش باید یک فایل mp3دانلود شه در مسیر sdcard.حالا از این به بعد دیگه با کلیک روش دانلود نکمه و پخش کنه فایلو.پس یه اکتیویتی Download و یه اکتیویتی واسه پخشش ساختم.برای جابه جا شدن بینشونم از intent استفاده کردم ولی مشکل اینه که با هربار کلیک دانلود میکنه فایلو.
توضیحات :
Main1 : اکتیویتی اصلی و اولیه
Main2: اکتیویتی شامل مدیا پلیر و پخش فایل صوتی
Main_Download:اکتیویتی دانلود فایل
 
کد پی‌اچ‌پی:
        imageView1_main.setOnClickListener(new OnClickListener() {
            public 
void onClick(View arg0) {
                
File file2=new File("/mnt/scdard/c/music.mp3");
                if (
file2.exists()==true){
                     
Intent j=new Intent(Main1.this,Main2.class) ;
                     
startActivity(j);
                                          }
                else
                    {
                    
Intent mydownload=new Intent(Main.this,Main_Download.class) ;
                     
startActivity(mydownload);
                     
                    }
            } 

سپاسگزار میشم راهنماییم کنید.
(۱۳۹۴/۰۳/۰۵, ۰۱:۲۱ ق.ظ)'samaneh_62' نوشته: [ -> ]سلام وخسته نباشید.مشکل دانلود رو حل کردم.البته اول یه خلاصه از ساختار برنامه بگم:
یه Main داریم با یه دکمه یا ایمیج باتن که با کلیک روش باید یک فایل mp3دانلود شه در مسیر sdcard.حالا از این به بعد دیگه با کلیک روش دانلود نکمه و پخش کنه فایلو.پس یه اکتیویتی Download و یه اکتیویتی واسه پخشش ساختم.برای جابه جا شدن بینشونم از intent استفاده کردم ولی مشکل اینه که با هربار کلیک دانلود میکنه فایلو.
توضیحات :
Main1 : اکتیویتی اصلی و اولیه
Main2: اکتیویتی شامل مدیا پلیر و پخش فایل صوتی
Main_Download:اکتیویتی دانلود فایل 
کد پی‌اچ‌پی:
        imageView1_main.setOnClickListener(new OnClickListener() {
            public 
void onClick(View arg0) {
                
File file2=new File("/mnt/scdard/c/music.mp3");
                if (
file2.exists()==true){
                     
Intent j=new Intent(Main1.this,Main2.class) ;
                     
startActivity(j);
                                          }
                else
                    {
                    
Intent mydownload=new Intent(Main.this,Main_Download.class) ;
                     
startActivity(mydownload);
                     
                    }
            } 

سپاسگزار میشم راهنماییم کنید.



 


سلام.
ابتدا توصیه می کنم که برنامه اندروید را به صورتی طراحی کنید که برای هر عملیات، یک روش (method) تعریف شده باشد. پس تا اینجا فرض می کنم که شما یک method نوشته اید که با اجرای آن، عملیات دانلود انجام می شود (کلید شماره 2801).
وقتی کاربر بر روی دکمه (Button) اشاره می کند، باید ابتدا چک کنیم که قبلا فایل دانلود شده یا نه. اگر دانلود نشده، method مربوط به دانلود را اجرا می کنیم (یا اگر دوست ندارید method تعریف کنید، کدش رو مستقیم بنویسید)، اما اگر قبلا دانلود شده بود، می توانید یک پیام به کاربر نمایش بدهید یا فایل اجرا شود یا ... . معمولا در ابتدای اجرای خود Activity ، چک می کنند که کدام فایل ها دانلود شده اند، آنهایی که دانلود شده اند، به جای عبارت ((دانلود))، بر روی دکمه، عبارت ((پخش)) نوشته می شود، وقتی هم روی دکمه اشاره شد، یا دانلود داریم یا پخش موسیقی.
اما برای چک کردن اینکه فایل دانلود شده یا نه، یا می توانید در آدرسی که باید فایل ذخیره شود، چک کنید که فایل وجود دارد یا نه، یا اینکه از مواردی مثل SharedPreferences برای ذخیره حالت دانلود استفاده کنید. یعنی یک متغیر را با SharedPreferences تعریف می کنید که مقدار اولیه آن برابر 0 است و بعد از دانلود فایل، آن را به 1 تغییر می دهیم.
برای کار با SharedPreferences  ، دسته بندی زیر را ببینید :

http://www.kelidestan.com/keys/categorie...ategory=10

در ضمن در مورد آدرس دهی که کد زیر را نوشته اید :

کد پی‌اچ‌پی:
File file2=new File("/mnt/scdard/c/music.mp3"); 

توصیه می کنم که موضوع زیر را بخوانید زیرا این نوع آدرس دهی ممکن است در برخی گوشی ها خطا ایجاد کند (/mnt/scdard/ مشابه /scdard/ می باشد) :

http://www.kelidestan.com/forum/showthread.php?tid=5682