2015-05-18 106 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。