Ошибка DownloadManager.Request.setNotificationVisibility с SecurityException: недопустимое значение для видимости: 2 - PullRequest
47 голосов
/ 19 февраля 2012

Я пытаюсь использовать DownloadManager в моем классе Service:

    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);

Без setNotificationVisibility этот код работает хорошо. Но он отображает уведомление, которое мне не нужно, потому что я использую этот код для отложенной загрузки изображений в ListView.

Я так понимаю, это уведомление можно скрыть с помощью

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);

Но в этом случае мое приложение вылетает с:

02-19 02: 24: 24.055: E / AndroidRuntime (2572): java.lang.SecurityException: недопустимое значение для видимости: 2 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.os.Parcel.readException (Parcel.java:1327) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:181) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:135) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.content.ContentProviderProxy.insert (ContentProviderNative.java:415) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.content.ContentResolver.insert (ContentResolver.java:730) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в android.app.DownloadManager.enqueue (DownloadManager.java:885) 02-19 02: 24: 24.055: E / AndroidRuntime (2572): в MyService.getImage (MyService.java:112)

Что не так с setNotificationVisibility? Как я мог получить уведомление?

1 Ответ

119 голосов
/ 21 февраля 2012

Вам необходимо следующее разрешение в манифесте согласно документации:

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