【发布时间】:2015-06-18 20:24:36
【问题描述】:
我最近在我的应用的开发者控制台上看到了以下崩溃:
java.lang.RuntimeException: Unable to start activity ComponentInfo{}: java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:812)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: Unable to create directory: /mnt/sdcard/Download
at android.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java:492)
at com...BrowserIntent.a(Unknown Source)
at com...BrowserIntent.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
... 11 more
下面是对应的代码:
final Intent intent = getIntent();
final List<String> segments = intent.getData().getPathSegments();
String url = intent.getDataString();
if (!url.startsWith("https://") && !url.startsWith("http://")){
url = "http://" + url;
}
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, segments.get(segments.size()-1));
这是我的清单的一部分:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package=""
android:versionCode="10"
android:versionName="1.9" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@drawable/ad_icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.NoActionBar" >
有人知道是什么原因造成的吗?
【问题讨论】:
-
用模拟器测试?
-
一个(相当愚蠢的)解决方法here
-
@AndyFaizan 不,我正在使用电话。我之前看过那个链接,但我无法自信地掌握如何将它应用到我的代码中。你能帮我解决这个问题吗?
-
你试过这个
String name = Environment.getExternalStorageDirectory().getAbsolutePath(); name += "/YourDirectoryName/" ; request.setDestinationInExternalPublicDir(name, segments.get(segments.size()-1)); -
在我的情况下“/YourDirectoryName/”会是什么?另外,您知道实际导致此错误的原因吗?是 SD 卡空间不足吗?
标签: java android android-sdcard illegalstateexception