Download manager does not start the download process in Android 6

252 Views Asked by At

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" />
0

There are 0 best solutions below