2015-05-18 113 views
3

以爲我要下載此文件(隨機文件): http://www.analysis.im/uploads/seminar/pdf-sample.pdf下載管理器不開始下載文件

這是我的代碼:

DownloadManager.Request req = new DownloadManager.Request(Uri.parse("http://www.analysis.im/uploads/seminar/pdf-sample.pdf")); 

req.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) 
    .setAllowedOverRoaming(false) 
    .setTitle("Random title") 
    .setDescription("Random description") 
    .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "pdf-sample.pdf"); 

在調試模式下,我可以看到,所有的參數正在糾正,爲什麼下載無法啓動?

編輯

我目前的權限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
+0

你有什麼錯誤? – NarendraJi

+0

@DroidWormNarendra沒有,只是下載不啓動,我沒有得到任何錯誤 –

+0

你有沒有適當的權限添加? – Yazan

回答

2

您允許的DownloadManager.Request.NETWORK_MOBILE網絡類型下載,但你爲什麼要設置setAllowedOverRoaming(false)

我試圖用Downloadmanager下載一個文件,這裏是我的代碼:

String url = "http://example.com/large.zip"; 
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 

// only download via WIFI 
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); 
request.setTitle("Example"); 
request.setDescription("Downloading a very large zip"); 

// we just want to download silently 
request.setVisibleInDownloadsUi(false); 
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN); 
request.setDestinationInExternalFilesDir(context, null, "large.zip"); 

// enqueue this request 
DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); 
downloadID = downloadManager.enqueue(request); 

我希望你啓發。

+0

我沒有入隊請求,所以我添加了它,它與我的代碼很好地合作,謝謝! –

0

按照以下步驟下載隨機文件。 創建一個名爲DownloadFileAsync.java

public class DownloadFileAsync extends AsyncTask<String, String, String> { 
    public static final int DIALOG_DOWNLOAD_PROGRESS = 0; 
    private ProgressDialog mProgressDialog; 

    private Context context; 

    public DownloadFileAsync(Context context) 
{ 
this.context = context; 
mProgressDialog = new ProgressDialog(context); 
mProgressDialog.setMessage("Downloading file.."); 
mProgressDialog.setIndeterminate(false); 
mProgressDialog.setMax(100); 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
mProgressDialog.setCancelable(true); 

} 

@Override 
protected void onPreExecute() { 
super.onPreExecute(); 
mProgressDialog.show(); 
} 

@Override 
protected String doInBackground(String... aurl) { 

try { 
    File root = Environment.getExternalStorageDirectory(); 
    URL u = new URL(aurl[0]); 
    HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
    c.setRequestMethod("GET"); 
    c.setDoOutput(true); 
    c.connect(); 

    int lenghtOfFile = c.getContentLength(); 

    FileOutputStream f = new FileOutputStream(new File(root + "/", aurl[1])); 

    InputStream in = c.getInputStream(); 

    byte[] buffer = new byte[1024]; 
    int len1 = 0; 
    long total = 0; 

    while ((len1 = in.read(buffer)) > 0) { 
     total += len1; //total = total + len1 
     publishProgress("" + (int)((total*100)/lenghtOfFile)); 
     f.write(buffer, 0, len1); 
    } 
    f.close(); 
} catch (Exception e) { 
    Log.d("Downloader", e.getMessage()); 
} 

return null; 

} 

protected void onProgressUpdate(String... progress) { 
Log.d("ANDRO_ASYNC",progress[0]); 
mProgressDialog.setProgress(Integer.parseInt(progress[0])); 
} 

@Override 
protected void onPostExecute(String unused) { 
mProgressDialog.dismiss(); 
} 


    } 

呼叫您的活動上面的類類爲

new DownloadFileAsync(TransformerActivity.this).execute(Constants.VIDEO_DOWNLOAD_LINK,"9T51B0108.mp4"); 
0

另外,還要確保你沒有在手機上啓用的任何VPN應用。似乎有些應用程序可能會干擾DownloadManager。