首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过P2P连接使用安卓的DownloadManager

如何通过P2P连接使用安卓的DownloadManager
EN

Stack Overflow用户
提问于 2015-09-03 00:33:09
回答 1查看 222关注 0票数 0

在安卓应用程序中,我想使用DownloadManager从使用P2P (Wi-Fi直连)连接的对等设备下载文件。然而,我发现,除非平板电脑/手机连接到WiFi网络,否则DownloadManager将拒绝通过P2P连接进行下载。它将输出一个错误,声明“没有连接”。如果Wi-Fi和P2P都已连接,我可以通过P2P连接成功下载。

下面是一个示例代码:

代码语言:javascript
复制
String url = "http://ipv4.download.thinkbroadband.com/5MB.zip";
String localFile = "5MB.zip";

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |  DownloadManager.Request.NETWORK_MOBILE);
request.setTitle("test.txt");
request.setDescription("Testing DownloadManager -- 5MB.zip");
request.setVisibleInDownloadsUi(true);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);
request.setDestinationInExternalFilesDir(context, null, localFile);

DownloadManager downloadManager = (DownloadManager)context.getSystemService(context.DOWNLOAD_SERVICE);
long downloadId = downloadManager.enqueue(request);

现在,我不确定是我没有正确使用它,还是它是一个不受支持的功能。如果需要的话,我愿意改变Android的代码库以使其正常工作(但我不能选择DownloadManager的替代品)。

检查安卓的代码,似乎checkCanUseNetwork()方法将返回"NO_CONNECTION“,因为它从mSystemFacade获得了一个空的NetworkInfo。请参见:

/packages/providers/DownloadProvider/src/com/android/providers/downloads/DownloadInfo.java

进一步的调查暗示了ConnectivityService中的一个“问题”。在连接Wi-Fi网络时,它会将mActiveDefaultNetwork设置为正确的类型,但在连接P2P时,它不会执行任何操作。

/frameworks/base/services/core/java/com/android/server/ConnectivityService.java

我使用的是Nexus4和Android 5.0.1,但我在KitKat 4.4上也看到了同样的问题。

EN

回答 1

Stack Overflow用户

发布于 2016-08-24 17:22:41

如果您删除以下代码行,它将工作。

"request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32358457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档