2012-02-19 10 views
38

Estoy intentando utilizar DownloadManager en una clase Service mío:DownloadManager.Request.setNotificationVisibility falla con jSecurityException: valor no válido para la visibilidad: 2

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

Sin setNotificationVisibility, este código funciona bien. Pero muestra una notificación, que no quiero, porque utilizo este código para imágenes cargadas perezosas en un ListView.

entiendo, esta notificación se puede ocultar con

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN); 

Pero en ese caso, mis aplicación se bloquea con:

02-19 02: 24: 24.055: E/Android Runtime (2572): java.lang.SecurityException: valor no válido para la visibilidad: 2 02-19 02: 24: 24.055: E/AndroidRuntime (2572): en android.os.Parcel.readException (Parcel.java:1327) 02- 19 02: 24: 24.055: E/AndroidRuntime (2572): en android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:181) 02-19 02: 24: 24.055: E/Android Runtime (2572): en android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:135) 02 -19 02: 24: 24.055: E/AndroidRuntime (2572): en android.content.ContentProviderProxy.insert (ContentProviderNative.java:415) 02-19 02: 24: 24.055: E/AndroidRuntime (2572): en android.content.ContentResolver.insert (ContentResolver.java:730) 02-19 02: 24: 24.055: E/AndroidRuntime (2572): en android.app.DownloadManager.enqueue (DownloadManager.java:885) 02-19 02: 24: 24.055: E/AndroidRuntime (2572): en MyService.getImage (MyService.java:112)

¿Qué pasa con setNotificationVisibility? ¿Cómo puedo tener la notificación?

+0

downloadRequest.setNotificationVisibility (...) me ayudó ... gracias – CoDe

+0

antes de utilizar este método: downloadRequest.setNotificationVisibility (...) tenga en cuenta que está Agregado en el nivel de API 11 – ozmank

Respuesta

95

son necesarios los siguientes permisos en el manifiesto de acuerdo con la documentación:

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

como se indica en la documentación ... ¡Gracias! – rds

+4

downloadRequest.setVisibleInDownloadsUi (....) otra API útil para ocultarlo de la interfaz de usuario de descarga. – CoDe

+3

No veo este permiso –

Cuestiones relacionadas