আমি ডাউনলোড ম্যানেজারটি আমার অ্যাপ্লিকেশনটির মধ্যে বিজ্ঞপ্তি বারে যে একই অগ্রগতি দেখায় তা পুনরুত্পাদন করার চেষ্টা করছি, তবে আমার অগ্রগতি কখনই প্রকাশিত হয় না। আমি রানওনউইথ্রেড () ব্যবহার করে এটি আপডেট করার চেষ্টা করছি, তবে কোনও কারণে এটি আপডেট হয়নি।
আমার ডাউনলোড:
String urlDownload = "https://dl.dropbox.com/s/ex4clsfmiu142dy/test.zip?token_hash=AAGD-XcBL8C3flflkmxjbzdr7_2W_i6CZ_3rM5zQpUCYaw&dl=1";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(urlDownload));
request.setDescription("Testando");
request.setTitle("Download");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "teste.zip");
final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
final long downloadId = manager.enqueue(request);
final ProgressBar mProgressBar = (ProgressBar) findViewById(R.id.progressBar1);
new Thread(new Runnable() {
@Override
public void run() {
boolean downloading = true;
while (downloading) {
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(downloadId);
Cursor cursor = manager.query(q);
cursor.moveToFirst();
int bytes_downloaded = cursor.getInt(cursor
.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
if (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) {
downloading = false;
}
final double dl_progress = (bytes_downloaded / bytes_total) * 100;
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress((int) dl_progress);
}
});
Log.d(Constants.MAIN_VIEW_ACTIVITY, statusMessage(cursor));
cursor.close();
}
}
}).start();
আমার স্ট্যাটাসমেসেজ পদ্ধতি:
private String statusMessage(Cursor c) {
String msg = "???";
switch (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
case DownloadManager.STATUS_FAILED:
msg = "Download failed!";
break;
case DownloadManager.STATUS_PAUSED:
msg = "Download paused!";
break;
case DownloadManager.STATUS_PENDING:
msg = "Download pending!";
break;
case DownloadManager.STATUS_RUNNING:
msg = "Download in progress!";
break;
case DownloadManager.STATUS_SUCCESSFUL:
msg = "Download complete!";
break;
default:
msg = "Download is nowhere in sight";
break;
}
return (msg);
}
আমার লগ নিখুঁতভাবে কাজ করছে, যখন আমার ডাউনলোড চলমান আছে "ডাউনলোডের কাজ চলছে!" এবং যখন এটি সম্পূর্ণ হয় "ডাউনলোড সম্পূর্ণ!", তবে এটি আমার অগ্রগতির ক্ষেত্রে ঘটে না কেন? আমার সত্যিকার অর্থে কিছু সাহায্যের প্রয়োজন, অন্য লজিকগুলি সেগুলি করার জন্য সত্যই প্রশংসিত