2012-02-19 10 views
38

Próbuję użyć DownloadManager w Service klasy kopalni:DownloadManager.Request.setNotificationVisibility nie z jSecurityException: nieprawidłową wartość dla widoczności: 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); 

Bez setNotificationVisibility, ten kod działa dobrze. Ale wyświetla powiadomienie, którego nie chcę, ponieważ używam tego kodu do ładowania obrazów w lille-ListView.

Rozumiem, zgłoszenie to może być ukryte z

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN); 

Ale w takim razie, moje awarie aplikacji z:

02-19 02: 24: 24,055: E/Android Runtime (2572): java.lang.SecurityException: nieprawidłowa wartość widoczności: 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): atandroid.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:181) 19/02 02: 24: 24,055: E/Android Runtime (2572) w android.database.DatabaseUtils.readExceptionFromParcel (DatabaseUtils.java:135) 02 -19 02: 24: 24.055: E/AndroidRuntime (2572): pod adresem 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)

Co jest nie tak z setNotificationVisibility? Jak mogę otrzymać powiadomienie?

+0

downloadRequest.setNotificationVisibility (...) pomógł mi ... dzięki – CoDe

+0

Przed użyciem tej metody: downloadRequest.setNotificationVisibility (...) należy pamiętać, że jest on dodany na poziomie interfejsu API 11 – ozmank

Odpowiedz

95

potrzebne następujące uprawnienia w manifeście według dokumentacji:

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

zgodnie z dokumentacją ... Dziękujemy! – rds

+4

downloadRequest.setVisibleInDownloadsUi (...) kolejny przydatny interfejs API do ukrycia go przed pobraniem interfejsu użytkownika. – CoDe

+3

Nie widzę tego pozwolenia. –

Powiązane problemy