web-dev-qa-db-ja.com

DownloadManager.Request.setNotificationVisibilityがSecurityException:可視性の無効な値で失敗する:2

私の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: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)

setNotificationVisibilityの何が問題になっていますか?どうすれば通知できますか?

52
rds

ドキュメントに従って、マニフェストで次の権限が必要です。

<uses-permission
        Android:name="Android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
122
charroch