有没有一种在android中使用DownloadManager通过局域网下载的方法?

有没有一种在android中使用DownloadManager通过局域网下载的方法?,android,android-5.0-lollipop,lan,android-download-manager,Android,Android 5.0 Lollipop,Lan,Android Download Manager,我正在开发一个应用程序,需要在android电视上播放视频列表。首先,我通过流媒体播放视频,同时开始下载视频。当一个特定的视频已经下载并且需要播放时,我使用下载的视频文件并播放它。在使用WIFI连接的设备(比如我用来测试的平板电脑)上,视频正在下载。但是我需要运行我的应用程序的电视是使用局域网连接的。这个问题有解决办法吗 目前,我就是这样开始下载的 public void startDownload(VideoAd videoAd) { String videoUrl = videoAd

我正在开发一个应用程序,需要在android电视上播放视频列表。首先,我通过流媒体播放视频,同时开始下载视频。当一个特定的视频已经下载并且需要播放时,我使用下载的视频文件并播放它。在使用
WIFI
连接的设备(比如我用来测试的平板电脑)上,视频正在下载。但是我需要运行我的应用程序的电视是使用局域网连接的。这个问题有解决办法吗

目前,我就是这样开始下载的

public void startDownload(VideoAd videoAd) {
    String videoUrl = videoAd.getUrl();
    Uri uri = Uri.parse(videoUrl);

    Environment
            .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
            .mkdirs();

    lastDownload = dlMgr.enqueue(new DownloadManager.Request(uri)
                        .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI |
                                DownloadManager.Request.NETWORK_MOBILE)
                        .setAllowedOverRoaming(false)
                        .setTitle("Downloading video ad")
                        .setDescription("Downloading "+getVideoNameFromLink(videoUrl))
                        .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, getVideoNameFromLink(videoUrl)));


    videoAd.setDownloadId(lastDownload);
}
它起作用了。但问题是它在局域网连接上不起作用

这是我目前在应用程序中使用的内容

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
    networkArr = connMgr.getAllNetworks();

    Log.d(TAG, "networkArr len: "+networkArr.length);
    for(Network n : networkArr){
        lblNetworks.setText(n.toString()+"\n");
    }
}else{
    // Use getAllNetworkInfo()
    NetworkInfo[] networkInfArr = connMgr.getAllNetworkInfo();

    for(NetworkInfo ni : networkInfArr){
        lblNetworks.setText(ni.toString()+"\n");
    }
}

我的平板电脑正在运行棒棒糖,我得到的数字是
103
。我不能在电视上尝试,因为它在另一栋楼上。

一个可能的解决方案是获得您想要的网络,并通过connectivity manager将您的进程绑定到此网络。看见您可以通过()获得所需的网络,并对其进行迭代,检查网络信息是否与您想要的网络信息匹配。

对于电视,“网络移动”无法工作。我建议将其删除,并尝试使用以下代码:-

lastDownload = dlMgr.enqueue(new DownloadManager.Request(uri)
                    .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI)
                    .setTitle("Downloading video ad")
                    .setDescription("Downloading "+getVideoNameFromLink(videoUrl))
                    .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, getVideoNameFromLink(videoUrl)));

如果此代码适用于TV,则需要应用检查(如果是TV)并相应地处理代码

嗯,我只是用了我以前发现的东西。谢谢我们的安卓电视并不是真正的安卓电视,但我有办法做检查。嗨。我尝试了你的解决方案,但我只得到一个3位数的数字。对吗?你能详细说明一下吗?你什么时候得到3位数?也许把密码寄出去?