Note that there are some explanatory texts on larger screens.

plurals
  1. POShow Download progress inside activity using DownloadManager
    primarykey
    data
    text
    <p>I'm trying to reproduce the same progress that DownloadManager shows in Notification bar inside my app, but my progress never is published. I'm trying to update it using runOnUiThread(), but for some reason it's not been updated.</p> <p>my download:</p> <pre><code>String urlDownload = "https://dl.dropbox.com/s/ex4clsfmiu142dy/test.zip?token_hash=AAGD-XcBL8C3flflkmxjbzdr7_2W_i6CZ_3rM5zQpUCYaw&amp;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(); </code></pre> <p>my statusMessage method: </p> <pre><code>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); } </code></pre> <p><strong>My log is working perfectly, while my download is running says "Download in progress!" and when it is complete "Download complete!", but the same doesn't occurs on my progress, why? I really need some help, other logics to do that are really appreciated</strong></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload