我的Android进阶之旅------>解决DownloadManager报错java.lang.SecurityException: Invalid value for visibility: 2

1、问题描述

今天使用Android系统的DownloadManager进行下载操作时,爆了如下所示的错误:

java.lang.RuntimeException: Unable to start service com.xtc.fm.qingting.services.QingtingFmDownloadService2@1b97b060 with Intent { act=com.xtc.fm.qingting.FM_DOWNLOAD_SERVICE_START pkg=com.xtc.fm.qingting cmp=com.xtc.fm.qingting/.services.QingtingFmDownloadService2 (has extras) }: java.lang.SecurityException: Invalid value for visibility: 2
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2911)
    at android.app.ActivityThread.access$2100(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1401)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)
Caused by: java.lang.SecurityException: Invalid value for visibility: 2
    at android.os.Parcel.readException(Parcel.java:1592)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
    at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
    at android.content.ContentResolver.insert(ContentResolver.java:1207)
    at android.app.DownloadManager.enqueue(DownloadManager.java:946)
    at com.xtc.fm.qingting.services.QingtingFmDownloadService2.initDownManager(QingtingFmDownloadService2.java:195)
    at com.xtc.fm.qingting.services.QingtingFmDownloadService2.onStartCommand(QingtingFmDownloadService2.java:120)
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2894)
    ... 9 more
java.lang.SecurityException: Invalid value for visibility: 2
    at android.os.Parcel.readException(Parcel.java:1592)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
    at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
    at android.content.ContentResolver.insert(ContentResolver.java:1207)
    at android.app.DownloadManager.enqueue(DownloadManager.java:946)
    at com.xtc.fm.qingting.services.QingtingFmDownloadService2.initDownManager(QingtingFmDownloadService2.java:195)
    at com.xtc.fm.qingting.services.QingtingFmDownloadService2.onStartCommand(QingtingFmDownloadService2.java:120)
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2894)
    at android.app.ActivityThread.access$2100(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1401)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:955)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:750)

其中相关的部分代码如下:

 //设置下载地址
        DownloadManager.Request downRequest = new DownloadManager.Request(Uri.parse(downloadUrl));
        // 设置允许使用的网络类型 (| DownloadManager.Request.NETWORK_MOBILE)
        downRequest.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
        // 下载时,不显示通知栏
        downRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
        // 显示下载界面
        downRequest.setVisibleInDownloadsUi(true);
        // 保存的文件名
        String fileName = downloadInfo.getProgramTitle() + ".m4a";
        // 设置下载路径和文件名
        downRequest.setDestinationInExternalPublicDir(Environment.DIRECTORY_MUSIC, fileName);
        //设置文件类型
        MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
        String mimeString = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(downloadUrl));
        downRequest.setMimeType(mimeString);
        // 设置为可被媒体扫描器找到
        downRequest.allowScanningByMediaScanner();
        // 将下载请求放入队列
        final long downloadId = manager.enqueue(downRequest);

2、解决方法

原来其中的一段代码是需要相应的权限 android.permission.DOWNLOAD_WITHOUT_NOTIFICATION

  // 下载时,不显示通知栏
  downRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);

因此在AndroidManifest.xml文件中加入上面所需要的权限即可。

<!--DownloadManager下载时不显示Notification-->
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng

时间: 2024-11-01 19:55:22

我的Android进阶之旅------&gt;解决DownloadManager报错java.lang.SecurityException: Invalid value for visibility: 2的相关文章

测试第三方提供的接口,运行报错java.lang.AbstractMethodError如何解决

问题描述 测试第三方提供的接口,运行报错java.lang.AbstractMethodError如何解决 2016-05-24 09:08:12.918::WARN: Nested in org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.AbstractMethodError: javax.ws.rs.core.UriBuil

我的Android进阶之旅------&amp;gt;解决Jackson等第三方转换Json的开发包在开启混淆后转换的实体类数据都是null的bug

1.错误描述 今天测试人员提了一个bug,说使用我们的app出现了闪退的bug,后来通过debug断点调试,发现我们的app转换服务器发送过来的json数据后,都是为null.而之前已经提测快一个月的功能,一直都是稳定的,为什么现在会报java.lang.NullPointerException. 2.错误原因 原来我提测了一个月的APP版本一直没有打开混淆开关,而出问题的这个APP版本在即将要发布出去的时候打开了混淆开关.这样的话,我那些要通过转换json数据为bean实体类,因为没有在pro

【我的Android进阶之旅】解决AndroidStudio编译时报错:Timeout waiting to lock artifact cache .

1. 错误描述 今天在Android Studio中,使用gradle命令的时候,出现了如下所示的错误: D:\GitLab Source\XTCLint>gradlew clean uploadArchives --stacktrace Starting a Gradle Daemon, 1 busy and 1 incompatible Daemons could not be reused, use --status for details FAILURE: Build failed wi

我的Android进阶之旅------&amp;gt;解决Android Studio编译后安装apk报错:The APK file does not exist on disk

1.错误描述 今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示: The APK file build\outputs\apk\OYP_2.3.4_I2Base_6476_official_debug.apk does not exist on disk. Error while Installing APK 如下图所示 2.解决方法 1.尝试了Build -> Clean Project再编译,还是无效 2.尝试重启Android Studio无效 然后我去打

【我的Android进阶之旅】 解决bug: Expected file scheme in URI: content://downloads/my_downloads/12

一.错误描述 今天测试MM用HTC手机测试某个模块的时候crash了,抓log后发现是使用DownloadManager下载apk安装包然后自动安装的时候,抛了异常:java.lang.IllegalArgumentException: Expected file scheme in URI: content://downloads/my_downloads/12 具体crash错误信息如下所示: 11-30 09:24:21.933 28279 28279 E AndroidRuntime:

【我的Android进阶之旅】解决Center OS 64位系统编译Android APP报错error=2和finished with non-zero exit value 127

一.错误描述 1.问题 java.io.IOException: error=2, 没有那个文件或目录 今天在刚重新搭建好的64位的Center OS上安装好了Android SDK,Jenkins,Git等一系列用于持续集成的环境之后,准备编译下项目试一试,然后Jenkins编译失败,错误如下所示: Caused by: java.io.IOException: Cannot run program "/usr/local/share/adt-bundle-linux-x86_64-20140

我的Android进阶之旅------&amp;gt;解决Your project contains error(s),please fix them

在使用eclipse写好Android的代码,代码没有报错.然后想在AVD中运行测试时,弹出错误框,提示信息为:  "Your project contains error(s),please fix them before running your application." 然后看到在Program提示框中的提示为: "Error generating final archive: Debug Certificate expired on 14-3-21 下午12:54&

【我的Android进阶之旅】解决bug:You need to use a Theme.AppCompat theme (or descendant) with this activity.

前言 今天用Android Studio 生成Activity的时候,默认继承AppCompatActivity ,而在AndroidManifest.xml我对该Activity设置了一个主题,然后运行的时候报了错误: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xtc.watch/com.xtc.watch.view.defaultprompt.activity.DefaultPromptAct

【我的Android进阶之旅】解决SVN Cleanup错误: Failed to run the WC DB work queue associated with

错误描述 在Android Studio中点击VCS向下箭头使用SVN Update功能更新代码的时候,报错如下所示: 错误描述信息: Error:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted 如错误描述提示我Cleanup,于是我尝试 VCS -> Cleanup Project进行Cleanup操作 可是我Cleanup失败,失败提示如下所示: 错误描述信息: Er