Менеджер загрузок не работает без доступа к интернету - PullRequest
1 голос
/ 08 октября 2019

Я реализовал http-сервер на устройстве raspberry, которое имеет собственную сеть без доступа к Интернету. Сейчас я разрабатываю приложение Xamarin.Android, которое должно загружать файлы, хранящиеся на сервере. Когда я подключаюсь к малиновой сети, нет подключения к интернету. Когда я пытаюсь загрузить любой файл с сервера через http, используя экземпляр Android DownloadManager, ничего не происходит. Нет уведомлений и нет ошибок вообще. Но когда я переключаю сеть в своем телефоне на локальный Wi-Fi, у меня появляется доступ к Интернету, и затем появляется уведомление о сбое загрузки.

Кажется, что DownloadManager не работает в автономном режиме, но клиент не хочет подключения к Интернету по Rasberryустройство.

Я создал свой экземпляр диспетчера загрузки на основе:

Android: Как использовать класс диспетчера загрузки?

Диспетчер загрузки неработает

Вот код:

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);
        }
    }
}

Сервер работает и правильно обслуживает файлы, потому что я могу загрузить его через веб-браузер на своем ноутбуке.

Как можноЯ достигаю этого без менеджера загрузок, или как заставить менеджер загрузок работать в автономном режиме?

...