diff options
Diffstat (limited to 'src/com/android/providers/downloads/DownloadThread.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadThread.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index b2353e16..57007f49 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -426,9 +426,18 @@ public class DownloadThread extends Thread { } return; } catch (IOException ex) { - if (mInfo.isOnCache() - && Helpers.discardPurgeableFiles(mContext, Constants.BUFFER_SIZE)) { - continue; + if (mInfo.isOnCache()) { + if (Helpers.discardPurgeableFiles(mContext, Constants.BUFFER_SIZE)) { + continue; + } + } else if (!Helpers.isExternalMediaMounted()) { + throw new StopRequest(Downloads.Impl.STATUS_DEVICE_NOT_FOUND_ERROR); + } + + long availableBytes = + Helpers.getAvailableBytes(Helpers.getFilesystemRoot(state.mFilename)); + if (availableBytes < bytesRead) { + throw new StopRequest(Downloads.Impl.STATUS_INSUFFICIENT_SPACE_ERROR, ex); } throw new StopRequest(Downloads.Impl.STATUS_FILE_ERROR, ex); } |