Android 下载管理器在没有internet访问的情况下不工作

Android 下载管理器在没有internet访问的情况下不工作,android,xamarin.forms,android-download-manager,Android,Xamarin.forms,Android Download Manager,我已经在raspberry设备上实现了http服务器,该设备有自己的网络,不需要访问internet。现在,我正在开发Xamarin.Android应用程序,它需要下载存储在服务器上的文件。当我连接到raspberry网络时,没有internet连接。当我尝试使用Android DownloadManager实例通过http从服务器下载任何文件时,什么也没发生。没有任何通知,也没有任何错误。但当我把手机的网络换成本地wifi时,我就可以上网了,下载失败的通知就会出现 DownloadManage

我已经在raspberry设备上实现了http服务器,该设备有自己的网络,不需要访问internet。现在,我正在开发Xamarin.Android应用程序,它需要下载存储在服务器上的文件。当我连接到raspberry网络时,没有internet连接。当我尝试使用Android DownloadManager实例通过http从服务器下载任何文件时,什么也没发生。没有任何通知,也没有任何错误。但当我把手机的网络换成本地wifi时,我就可以上网了,下载失败的通知就会出现

DownloadManager似乎不能脱机工作,但客户不希望在raspberry设备上连接internet

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

代码如下:

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浏览器下载它


如果没有下载管理器,我如何实现这一点,或者如何强制下载管理器脱机工作?

请求。设置允许的网络类型(DownloadNetwork.Wifi | DownloadNetwork.Mobile)为什么还要移动?这是互联网。这是我的第五种方法。我在没有这些选项的情况下进行了尝试,结果是一样的。您始终可以使用HttpUrlConnection自己下载文件。当然可以,但如果不使用DownloadManager,我无法将下载的文件保存在Downloads目录中。每当我尝试保存时,都不会出现错误,文件位于/data/apname/Downloads中,但在android上的下载文件夹中不可见。也许我做错了什么,但我认为没有DownloadManager就无法做到这一点,而且我很难相信DownloadManager需要互联网连接。