2016-01-22 42 views
4

首先,在这个问题上有很多问题,但没有一个反映我的问题。例如,我读了thisthisDownloadManager IllegalStateException在DIRECTORY_DOWNLOADS中创建下载文件

,我有这个问题,是在非常少数情况下,我的功能setDestinationInExternalPublicDir结果在下面的堆栈跟踪:

Fatal Exception: java.lang.RuntimeException: Unable to start receiver com.onlinetvrecorder.otrapp2.listeners.DownloadUpdateReceiver: java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download 
     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2274) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:131) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4791) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download 
     at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:496) 
     at com.myapp.Utils.download(SourceFile:752) 
     at com.myapp.Receiver.onReceive(SourceFile:20) 
     at android.app.ActivityThread.handleReceiver(ActivityThread.java:2267) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:131) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4791) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
     at dalvik.system.NativeStart.main(NativeStart.java) 

我使用的是标准Environment不断告诉DownloadManager保存文件的位置。

android.app.DownloadManager dm = (android.app.DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); 

DownloadManager.Request request = new DownloadManager.Request(Uri.parse("url.to.file.ext")); 
request.setMimeType("mime/type"); 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    Utils.setDownloadRequestVisibility(request, android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
} 

request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.ext"); 
request.setTitle(context.getString(R.string.download)); 

dm.enqueue(request); 

如前所述,甚至有1%的用户可能会遇到此错误。什么可能导致它?

回答

20

在编写我的问题的过程中,我注意到我可能自己解决了这个问题。我将写出有问题的设备型号,但在Crashlytics上它显示“未知”。我点击了,并且显示了以下模型:GI I9500 TMMARS。运行Android 4.

TMMARS似乎是来自Trend Micro的软件。

趋势科技移动应用程序信誉服务或TMMARS是一个基于云的服务 自动识别基于应用 行为移动威胁。

系统极有可能不像应用程序所期望的那样运行,仅仅因为它是一个威胁检测环境。

实例崩溃报告:

example crash report from Crashlytics

+0

非常感谢您! – heloisasim

相关问题