下载管理器无法访问互联网而无法使用

问题描述 投票:1回答:1

我已经在具有自己的网络而无法访问Internet的树莓派设备上实现了http服务器。现在,我正在开发Xamarin.Android应用程序,该应用程序需要下载存储在服务器上的文件。当我连接到树莓网络时,没有互联网连接。当我尝试使用Android DownloadManager实例通过http从服务器下载任何文件时,没有任何反应。没有通知,也没有错误。但是,当我将手机中的网络更改为本地wifi时,我可以访问Internet,然后显示有关下载失败的通知。

似乎DownloadManager不能离线工作,但客户不希望在树莓派设备上建立Internet连接。

我基于以下内容创建了下载管理器实例:

Android: How to use download manager class?

Download Manager not working

这里是代码:

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        LoadApplication(new App());

        if (ActivityCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != Android.Content.PM.Permission.Granted || ActivityCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != Android.Content.PM.Permission.Granted)
        {

            // this will request for permission when user has not granted permission for the app 
            ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.ReadExternalStorage, Manifest.Permission.WriteExternalStorage }, 1);
        }

        else
        {
            //Download Script

            DownloadManager downloadManager = (DownloadManager)GetSystemService(Context.DownloadService);
            Android.Net.Uri uri = Android.Net.Uri.Parse("http://192.168.43.147:8080/data/22f13b77-d3cc-4788-96b3-cf454d4c07b6_IMG_20191008_122456.jpg");
            DownloadManager.Request request = new DownloadManager.Request(uri);
            request.SetAllowedNetworkTypes(DownloadNetwork.Wifi | DownloadNetwork.Mobile);
            request.SetVisibleInDownloadsUi(true); request.SetNotificationVisibility(Android.App.DownloadVisibility.Visible);
            request.SetDestinationInExternalPublicDir(Android.OS.Environment.DirectoryDownloads, uri.Path.Replace('\\', '/').Split('/').Last());
            downloadManager.Enqueue(request);
        }
    }
}

服务器可以正常工作,并且可以正确提供文件,因为我可以通过笔记本电脑上的Web浏览器下载它。

在没有下载管理器的情况下如何实现此目标,或者如何强制下载管理器脱机工作?

android xamarin.forms android-download-manager
1个回答
0
投票

您有没有解决这个问题?我遇到了完全相同的问题。一切工作正常,直到您断开与互联网的连接,然后下载只是排队,直到重新连接后才开始,即使下载在本地网络上也可以。

© www.soinside.com 2019 - 2024. All rights reserved.