PDA

View Full Version : بسته نشدن Dialog بعد از کامل شدن دانلود



javadi3d
شنبه 24 اسفند 1392, 20:45 عصر
سلام
در کد در بعضی مواقع پس از صد در صد شدن دانلود dialog ی که برای نمایش پیشرفت دانلود می باشد بسته نمی شود.
چرا؟؟


.
.
.
.
class DownloadFileFromURL extends AsyncTask<String, String, String> {
@Override
protected void onCancelled() {
File file= new File("/sdcard/EBKH/samat.mp3");
file.delete();
}

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

@Override
protected String doInBackground(String... f_url) {
int count;
try {
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
//getting file length
int lenghtOfFile = conection.getContentLength();

//input stream to read file - with 8k buffer
InputStream input = new BufferedInputStream(url.openStream(), 8192);

//Output stream to write file
OutputStream output = new FileOutputStream("/sdcard/EBKH/samat.mp3");

byte data[] = new byte[1024];

long total = 0;

while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress(""+(int)((total*100)/lenghtOfFile));

// writing data to file
output.write(data, 0, count);
}

//flushing output
output.flush();

//closing streams
output.close();
input.close();

} catch (Exception e) {
Log.e("Error: ", e.getMessage());
}

return null;
}

/**
* Updating progress bar
* */
protected void onProgressUpdate(String... progress) {
// setting progress percentage
pDialog.setProgress(Integer.parseInt(progress[0]));
}

/**
* After completing background task
* Dismiss the progress dialog
* **/
@Override
protected void onPostExecute(String file_url) {
// dismiss the dialog after the file was downloaded
dismissDialog(progress_bar_type);
if(audioFile.exists())
{
Builder alert = new AlertDialog.Builder( DoaMatn2.this);
alert.setMessage("برای پخش فایل از صفحه خارج و دوباره داخل شوید.");
alert.setPositiveButton("OK", null);
alert.show();
}

smemamian
شنبه 24 اسفند 1392, 21:04 عصر
http://barnamenevis.org/showthread.php?444223-%D8%AF%D9%88%D8%B3%D8%AA%D8%A7%D9%86-%D9%87%D8%B1-%DA%A9%DB%8C-%D9%85%DB%8C%D8%AA%D9%88%D9%86%D9%87-%DA%A9%D9%85%DA%A9-%DA%A9%D9%86%D9%87

mrtzxxx
یک شنبه 25 اسفند 1392, 23:48 عصر
دور این کد رو خط بگیرین . اینو همه میگن خوبه یا پیشنهاد میدن ولی به پای اجرا که میرسه هزار تا مشکل داره . این مشکلی که گفتین منم نتوستم حلش کنم رفتم سراغ یه راه دیگه که استفاده از سرویس دانلود منیجر آندرویده این خیلی مطمئن تره . تازه اگر هم بتونی حل کنی یه مشکل بزرگتر دارین اونم تو قسمت بافرهاست که تو بعضی از گوشیها دانلود رو ناقص انجام میده. این کد فقط رو نسخه 2.3 خوب جواب میده ولی رو نسخه های بالاتر مشکل دار میشه. اگر کد دانلود منیجر رو خواستین ایمیل بدین تا واستون بفرستم.

ashkan_gorg
دوشنبه 26 اسفند 1392, 09:05 صبح
دوست عزیز
mrtzxxx (http://barnamenevis.org/member.php?45738-mrtzxxx) بهتر نیست کد را درهمین قسمت قرار بدین تا همه استفاده کنند؟
متشکرم

mrtzxxx
دوشنبه 26 اسفند 1392, 19:19 عصر
دوست عزیز
mrtzxxx (http://barnamenevis.org/member.php?45738-mrtzxxx) بهتر نیست کد را درهمین قسمت قرار بدین تا همه استفاده کنند؟
متشکرم

چشم اشکان جان اینم به خاطر شما.

mgr=(DownloadManager)getSystemService(DOWNLOAD_SER VICE);
registerReceiver(onComplete,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPL ETE));
registerReceiver(onNotificationClick,new IntentFilter(DownloadManager.ACTION_NOTIFICATION_C LICKED));


Uri uri=Uri.parse("http://url");
lastDownload=mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NE TWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("download")
.setDescription("در حال دانلود . لطفا صبور باشید")
.setDestinationInExternalPublicDir("/directory name/",name file));
Toast.makeText(this, "آغاز دانلود در نوتیفیکیشن دستگاه شما", Toast.LENGTH_LONG).show();

}

/////////////////////////// نمایش پیغامهای وضعیت دانلود
private CharSequence statusMessage(Cursor c) {
// TODO Auto-generated method stub
String msg="???";
switch(c.getInt(c.getColumnIndex(DownloadManager.C OLUMN_STATUS))) {
case DownloadManager.STATUS_FAILED:
msg="خطا در دانلود!";
break;
case DownloadManager.STATUS_PAUSED:
msg="توقف دانلود!";
break;
case DownloadManager.STATUS_PENDING:
msg="آماده شدن برای دانلود";
break;
case DownloadManager.STATUS_RUNNING:
msg="در حال بارگیری";
break;
case DownloadManager.STATUS_SUCCESSFUL:
msg="دانلود کامل شد";
break;
default:
msg="دانلودی به چشم نمیخورد";
break;
}
return(msg);
}
///////////////////////////////وقتی دانلود کامل شد این اجرا میشود
BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
menu.setEnabled(true);
btnPlay.setEnabled(true);
btnForward.setEnabled(true);
btnBackward.setEnabled(true);
Toast.makeText(Player.this, "دانلود کامل شد", Toast.LENGTH_SHORT).show();
}
};
////////////////////////////// وقتی نوار دانلود در نوتیفیکیشن را لمس کنیم
BroadcastReceiver onNotificationClick=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
Toast.makeText(ctxt, "برنامه نویس و طراح: مرتضی", Toast.LENGTH_SHORT).show();
}

mrtzxxx
سه شنبه 27 اسفند 1392, 21:01 عصر
میگم اگه کسی کد بدردش خورده یه تشکر هم بزنه خوشحال میشیم. :لبخند:

moralschool
سه شنبه 10 تیر 1393, 21:37 عصر
سلام
من از همین دانلود منیجر برای دانلود استفاده کردم
اما به یه مشکل برخوردم
اول اینکه : من گفتم که قبل از دانلود چک کنه اگه فایل وجود داشت دیگه دانلود نکنه ... اما اگه فایل ناقص دانلود بشه متاسفانه همین پیام رو میده که فایل قبلا دانلود شده ! برای حل این مشکل چیکار کنم ؟ چون با این کد برنامه هی بصورت مجدد فایل رو دانلود میکنه و با یه نام دیگه ذخیره میکنه که من نمیخوام اینجور باشه ... چطور میتونم نام فایل رو بعد از اتمام دانلود تغییر بدم تا اگه مثلا ناقص دانلود شده بود فایل قبلی رو حذف کنه و از اول دانلود کنه ؟

Rezaguitar
چهارشنبه 11 تیر 1393, 10:45 صبح
سلام
من از همین دانلود منیجر برای دانلود استفاده کردم
اما به یه مشکل برخوردم
اول اینکه : من گفتم که قبل از دانلود چک کنه اگه فایل وجود داشت دیگه دانلود نکنه ... اما اگه فایل ناقص دانلود بشه متاسفانه همین پیام رو میده که فایل قبلا دانلود شده ! برای حل این مشکل چیکار کنم ؟ چون با این کد برنامه هی بصورت مجدد فایل رو دانلود میکنه و با یه نام دیگه ذخیره میکنه که من نمیخوام اینجور باشه ... چطور میتونم نام فایل رو بعد از اتمام دانلود تغییر بدم تا اگه مثلا ناقص دانلود شده بود فایل قبلی رو حذف کنه و از اول دانلود کنه ؟
تو بقیه حالتها به جز وقتی دانلود کامل شده کد delete شدن فایل رو قرار بدید.

moralschool
چهارشنبه 11 تیر 1393, 11:37 صبح
چجور ؟
لطفا کدش رو با توجه به مثال بالا راهنمایی کنید که چی میشه ؟
ممنون