DownloadManager.Request.setNotificationVisibility失败,出现jSecurityException:可见性值无效:2

rds*_*rds 50 android download-manager

我正试图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);
Run Code Online (Sandbox Code Playgroud)

没有setNotificationVisibility,这段代码效果很好.但是它显示了一个我不想要的通知,因为我使用这个代码在一个延迟加载图像ListView.

据我所知,这个通知可以隐藏起来

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我的应用程序崩溃:

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):at 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):at android.app.DownloadManager.enqueue(DownloadManager.java:885)02-19 02:24:24.055:E/AndroidRuntime(2572):at MyService.getImage(MyService.java:112)

什么错了setNotificationVisibility?我怎么能收到通知?

cha*_*och 126

根据文档,您需要在清单中具有以下权限:

<uses-permission
        android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
Run Code Online (Sandbox Code Playgroud)

  • 我没有看到这个许可 (6认同)
  • downloadRequest.setVisibleInDownloadsUi(....)另一个有用的API,用于将其从下载UI中隐藏. (4认同)