59

私は私DownloadManagerServiceクラスで使用しようとしています:

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

何が問題なのsetNotificationVisibilityですか?どうすれば通知を受け取ることができますか?

4

2 に答える 2

148

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

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


マニフェストの権限のほとんどはAndroidStudioによってオートコンプリートされますが、これはオートコンプリートされません。

于 2012-02-21T09:12:21.837 に答える
1

ただし、そのパーミッションを、そこに指定されていないrn-fetch-blobのマニフェストに追加する必要もあります。

<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
于 2020-05-11T17:58:45.847 に答える