I have implemented a download manager that works on Android 7 and above. However, this does not work on Android 6. Is the download manager not available on Android 6 ? The download process does not start!
private long startDownload(URL fileURL, String fileName) {
Uri uri=Uri.parse(fileURL.toString());
return this.downloadManager.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName));
}
I use this method to check if the download is started and completed.
private void waitForDownload(long downloadId , Cursor cursor)
{
try
{
while (this.activeDownload)
{
this.messageController.showMessage(new DownloadMessage());
cursor = this.downloadManager.query(new DownloadManager.Query().setFilterById(downloadId));
if (cursor.moveToFirst())
{
@SuppressLint("Range") int bytes_downloaded = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
@SuppressLint("Range") int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
final int dl_progress = (int) ((bytes_downloaded * 100l) / bytes_total);
Timber.i("DOWNLOAD " + downloadId + " RUNNING - Progress: " + dl_progress + "%");
}
Thread.sleep(500);
}
}
catch (Exception e)
{
Timber.e(e);
}
}
The following permissions are set.
<uses-permission android:name="android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.ACTION_CLOSE_SYSTEM_DIALOGS" />