下载管理器不工作
Posted
技术标签:
【中文标题】下载管理器不工作【英文标题】:Download Manager not working 【发布时间】:2016-09-02 02:46:53 【问题描述】:我正在尝试开发显示视频的应用程序,您可以下载它 我正在使用下载管理器类,但它没有工作,也没有给我任何错误:(
这是我的下载管理器代码:
public void downloadFileFromUrl(String url, String fileName)
String filePath=Environment.getExternalStorageDirectory() + File.separator + "BlueNet";
File folder = new File(filePath);
if (!folder.exists())
folder.mkdirs();
try
Uri downloadUri = Uri.parse(url);
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
request.allowScanningByMediaScanner();
request.setDestinationInExternalPublicDir("/BlueNet/",fileName);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setVisibleInDownloadsUi(true);
DownloadManager downloadManager = (DownloadManager)getApplicationContext().getSystemService(DOWNLOAD_SERVICE);
long id= downloadManager.enqueue(request);
Toast.makeText(this, fileName, Toast.LENGTH_LONG).show();
Toast.makeText(this, filePath, Toast.LENGTH_LONG).show();
catch (Exception ex)
Toast.makeText(this, ex.toString(), Toast.LENGTH_LONG).show();
这就是我的称呼
downloadFileFromUrl(path, fileName);
地点:
路径:“192.168.1.5:8080/BlueNet_NMC/blue_elephant.mp4”
文件名:“blue_elephant.mp4”
我已经将这个权限授予清单
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
请大家帮忙
【问题讨论】:
你试过用“/BlueNet”代替“/BlueNet/”吗?此外,AFAIK 无需检查该文件夹是否存在,DownloadManager
会为您完成。
好的,我删除检查陡峭
您是否尝试过从 Internet 下载图像或其他内容,而不是从本地网络下载文件?
不,但是当我将链接放入浏览器时,我可以下载它
试一试,告诉我它是否有效。
【参考方案1】:
正如我在 cmets 中所说,DownloadManager
仅处理以http://
或https://
开头的请求,如您所见in the docs。
我不知道究竟是什么问题,因为我缺乏关于您的服务器的信息,但我认为这是一个常见问题,因此您应该避免在不提供该方案的情况下使用 IP 地址。
【讨论】:
不好意思反驳,不过好像确实支持HTTPS。看看this link,他们指出:Uri: the HTTP or HTTPS URI to download.
我不是故意的,我已经更新了我的答案以反映我想说的话。感谢您指出这一点,@DarkCygnus!【参考方案2】:
你在这行有问题 - request.setDestinationInExternalPublicDir("/BlueNet/",fileName);
只需删除此行或以其他方式创建目录。
【讨论】:
【参考方案3】:使用DownloadManger
类下载带有HTTP URL 的文件时遇到问题;但后来我做了以下事情,问题就解决了。
代替此代码:
String url = "http://masteranime.ir/music/best/Dragon Ball GT Dan Dan Kokoro Hikareteku.mp3";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
使用此代码:
String url = "http://masteranime.ir/music/best/Dragon Ball GT Dan Dan Kokoro Hikareteku.mp3";
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url).replaceAll(" ","%20"));
【讨论】:
【参考方案4】:request.setDestinationInExternalPublicDir("/BlueNet/", fileName);
您必须在此处提及目录作为第一个参数。 /BlueNet/
不是目录。
【讨论】:
以上是关于下载管理器不工作的主要内容,如果未能解决你的问题,请参考以下文章
警报管理器不工作... android.app.ReceiverRestrictedContext