DownloadManager.Request.setNotificationVisibility fails with SecurityException: invalid value for visibility: 2

AndroidDownload Manager

Android Problem Overview


I'm trying to use DownloadManager in a Service class of mine:

	DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
	//imageUri is a valid Uri
	Request downloadRequest= new Request(imageUri); 
	//without this line, it works
	downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
	//subpath is valid
	downloadRequest.setDestinationInExternalFilesDir(this, null, subPath);
	downloadManager.enqueue(downloadRequest);

Without setNotificationVisibility, this code works well. But it displays a notification, that I don't want, because I use this code for lazy-loading images in a ListView.

I understand, this notification can be hidden with

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);

But in that case, my application crashes with:

> 02-19 02:24:24.055: E/AndroidRuntime(2572): > java.lang.SecurityException: Invalid value for visibility: 2 02-19 > 02:24:24.055: E/AndroidRuntime(2572): at > android.os.Parcel.readException(Parcel.java:1327) 02-19 02:24:24.055: > E/AndroidRuntime(2572): at > android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181) > 02-19 02:24:24.055: E/AndroidRuntime(2572): at > android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) > 02-19 02:24:24.055: E/AndroidRuntime(2572): at > android.content.ContentProviderProxy.insert(ContentProviderNative.java:415) > 02-19 02:24:24.055: E/AndroidRuntime(2572): at > android.content.ContentResolver.insert(ContentResolver.java:730) 02-19 > 02:24:24.055: E/AndroidRuntime(2572): at > android.app.DownloadManager.enqueue(DownloadManager.java:885) 02-19 > 02:24:24.055: E/AndroidRuntime(2572): at > MyService.getImage(MyService.java:112)

Whats' wrong with setNotificationVisibility? How can I had the notification?

Android Solutions


Solution 1 - Android

You need the following permission in the manifest as per documentation:

<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />

Note
Most of the manifest permissions will be autocompleted by Android Studio, but this will not be auto-completed.

Solution 2 - Android

but also need to add that permission to rn-fetch-blob's manifest that is not given in it.

<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrdsView Question on Stackoverflow
Solution 1 - AndroidcharrochView Answer on Stackoverflow
Solution 2 - AndroidKaransinh PadhiyarView Answer on Stackoverflow