2016-05-07 162 views
0

什麼下載管理器下載的文件大小限制在Android中,因爲我想下載的文件大小(700MB)它不是下載的,但是當我嘗試同樣的事情1MB或2MB它的下載完美。安卓:什麼是下載管理文件大小限制

因此,任何幫助,請

+0

我認爲這取決於設備,操作系統等。您是否嘗試檢查下載的錯誤代碼? –

+0

我怎麼知道錯誤代碼? –

+0

http://developer.android.com/reference/android/app/DownloadManager.html –

回答

1

有對文件大小沒有限制的記錄,但可用磁盤空間將是一個可能的限制。

對於您的失敗下載,請使用DownloadManager.Query檢查下載的COLUMN_STATUSCOLUMN_REASON值,以嘗試確定發生了什麼。

this sample app中,我下載了一個帶有DownloadManager的文件,並且我有一個允許您查看狀態信息的按鈕。

當您請求的下載,你會得到一個int回來這是一個下載請求ID:

lastDownload=mgr.enqueue(req); 

當用戶點擊相應的按鈕,我查詢下載狀態,日誌中的部分信息,以LogCat,並顯示Toast

private void queryStatus(View v) { 
    Cursor c= 
     mgr.query(new DownloadManager.Query().setFilterById(lastDownload)); 

    if (c == null) { 
     Toast.makeText(getActivity(), R.string.download_not_found, 
        Toast.LENGTH_LONG).show(); 
    } 
    else { 
     c.moveToFirst(); 

     Log.d(getClass().getName(), 
      "COLUMN_ID: " 
       + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_ID))); 
     Log.d(getClass().getName(), 
      "COLUMN_BYTES_DOWNLOADED_SO_FAR: " 
       + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR))); 
     Log.d(getClass().getName(), 
      "COLUMN_LAST_MODIFIED_TIMESTAMP: " 
       + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP))); 
     Log.d(getClass().getName(), 
      "COLUMN_LOCAL_URI: " 
       + c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))); 
     Log.d(getClass().getName(), 
      "COLUMN_STATUS: " 
       + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))); 
     Log.d(getClass().getName(), 
      "COLUMN_REASON: " 
       + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON))); 

     Toast.makeText(getActivity(), statusMessage(c), Toast.LENGTH_LONG) 
      .show(); 

     c.close(); 
    } 
    } 

    private String statusMessage(Cursor c) { 
    String msg="???"; 

    switch (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) { 
     case DownloadManager.STATUS_FAILED: 
     msg=getActivity().getString(R.string.download_failed); 
     break; 

     case DownloadManager.STATUS_PAUSED: 
     msg=getActivity().getString(R.string.download_paused); 
     break; 

     case DownloadManager.STATUS_PENDING: 
     msg=getActivity().getString(R.string.download_pending); 
     break; 

     case DownloadManager.STATUS_RUNNING: 
     msg=getActivity().getString(R.string.download_in_progress); 
     break; 

     case DownloadManager.STATUS_SUCCESSFUL: 
     msg=getActivity().getString(R.string.download_complete); 
     break; 

     default: 
     msg= 
      getActivity().getString(R.string.download_is_nowhere_in_sight); 
     break; 
    } 

    return(msg); 
    } 
+0

所以請你能給我一個例子!? –

+0

所以我應該把這2種方法? –

+0

@ M.Honi:你問過一個例子。我給你一個。學習這個例子並將其應用於自己的情況是你的工作。 – CommonsWare