DownloadManager.Request.setNotificationVisibility失败,出现SecurityException:可见性的值无效:2 [英] DownloadManager.Request.setNotificationVisibility fails with SecurityException: invalid value for visibility: 2

查看:100
本文介绍了DownloadManager.Request.setNotificationVisibility失败,出现SecurityException:可见性的值无效:2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在我的 Service 类中使用 DownloadManager :

I'm trying to use DownloadManager in a Service class of mine:

    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 中.

Without setNotificationVisibility, this code works well. But it displays a notification, that I don't want, because I use this code for lazy-loading images in a ListView.

我了解,此通知可以用

downloadRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);

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

But in that case, my application crashes with:

02-19 02:24:24.055:E/AndroidRuntime(2572):java.lang.SecurityException:可见性的无效值:2 02-1902: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):atandroid.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)02-19 02:24:24.055:E/AndroidRuntime(2572):atandroid.content.ContentProviderProxy.insert(ContentProviderNative.java:415)02-19 02:24:24.055:E/AndroidRuntime(2572):atandroid.content.ContentResolver.insert(ContentResolver.java:730)02-1902:24:24.055:E/AndroidRuntime(2572):在android.app.DownloadManager.enqueue(DownloadManager.java:885)02-1902:24:24.055:E/AndroidRuntime(2572):在MyService.getImage(MyService.java:112)

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 有什么问题?我怎么能收到通知?

Whats' wrong with setNotificationVisibility? How can I had the notification?

推荐答案

您需要根据文档在清单中获得以下权限:

You need the following permission in the manifest as per documentation:

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

这篇关于DownloadManager.Request.setNotificationVisibility失败,出现SecurityException:可见性的值无效:2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆