Kno*_*sos 10 android android-download-manager
首先,关于这个问题有很多问题,但没有一个反映我的问题.我有例如读这个和这个.
我遇到的问题是,在极少数情况下,我的函数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)
Run Code Online (Sandbox Code Playgroud)
我使用标准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);
Run Code Online (Sandbox Code Playgroud)
如前所述,甚至可能有1%的用户没有收到此错误.可能是什么原因造成的?
| 归档时间: |
|
| 查看次数: |
4186 次 |
| 最近记录: |