Uygulamamdaki Bildirim çubuğunda DownloadManager'ın gösterdiği aynı ilerlemeyi yeniden oluşturmaya çalışıyorum, ancak ilerlemem hiç yayınlanmadı. Ben runOnUiThread() kullanarak güncellemeye çalışıyorum, ancak bazı sebeplerden dolayı güncellenmedi.Göster İndirme işleminin içinden geçme işlemini DownloadManager'ı kullanarak indirin
my indir:
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();
benim StatusMessage yöntemi:
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);
}
benim indir çalışırken Benim günlüğü, mükemmel çalışıyor
"! Progress İndirme" diyor
ve tamamlandığında "İndirme tamamlandı!", ancak ilerlememde aynı şey gerçekleşmiyor, neden? Gerçekten gerçekten iki tamsayı bölünüyor
Dosyanız çok küçük olabilir ve bu ilerleme kaydedilmeden önce tamamlanır mı? İndirme sorgusu görevinizde ne döndürür? Görev yalnızca belirli bir süre sonra yürütülürse, ana iş parçanızda uzun süren başka bir işleminiz olabilir. –
Kodu güncelledim, şimdi bir bakabilir misin? Ve dosya uzunluğu hakkında çok küçük değil, bildirim çubuğunda indirme ilerlemesini görebiliyorum –