Как я могу открыть файл .pdf в браузере из проекта Xamarin UWP? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть проект Xamarin, в котором я создаю файл .pdf с нуля и сохраняю его в своем локальном хранилище.Это прекрасно работает и может найти его и открыть на диске, где я его сохранил.Тем не менее, мне нужно открыть файл .pdf сразу после создания программно.

Я уже пробовал разные варианты, используя Process и ProcessStartInfo, но они просто выдают ошибки, такие как «System.ComponentModel.Win32Exception:« Система не может найти указанный файл »и« System.PlatformNotSupportedException ».

Это в основном путь, который я пытаюсь открыть с помощью Process.


var p = Process.Start(@"cmd.exe", "/c start " + @"P:\\Receiving inspection\\Inspection Reports\\" + timestamp + ".pdf");


Я также пытался использовать ProcessStartInfo, используя некоторые варианты, но я получаю одни и те же ошибки снова и снова.

var p = new Process();
p.StartInfo = new ProcessStartInfo(@"'P:\\Receiving inspection\\Inspection Reports\\'" + timestamp + ".pdf");
p.Start();

1 Ответ

0 голосов
/ 05 апреля 2019

Лучший способ - использовать метод LaunchFileAsync, чтобы открыть файл в браузере. Вы можете создать FileLauncher DependencyService для вызова метода uwp LaunchFileAsync из общего ресурса xamarin.

Интерфейс

public interface IFileLauncher
{
    Task<bool> LaunchFileAsync(string uri);
}

Осуществление

[assembly: Dependency(typeof(UWPFileLauncher))]

namespace App14.UWP
{
    public class UWPFileLauncher : IFileLauncher
    {
        public async Task<bool> LaunchFileAsync(string uri)
        {
            var file = await Windows.Storage.StorageFile.GetFileFromPathAsync(uri);
            bool success = false;
            if (file != null)
            {
                // Set the option to show the picker
                var options = new Windows.System.LauncherOptions();
                options.DisplayApplicationPicker = true;

                // Launch the retrieved file
                 success = await Windows.System.Launcher.LaunchFileAsync(file, options);
                if (success)
                {
                    // File launched
                }
                else
                {
                    // File launch failed
                }
            }
            else
            {
                // Could not  
            }
            return success;
        }
    }
}

Использование

private async void Button_Clicked(object sender, EventArgs e)
{        
  await DependencyService.Get<IFileLauncher>().LaunchFileAsync("D:\\Key.pdf");
}

Обратите внимание, что если вы хотите получить доступ к диску D или C в uwp, вам нужно добавить возможность broadFileSystemAccess. за более подробной информацией обращайтесь это .

Обновление

Если файлы UWP основаны на сети, а не на локальной зоне, вы можете использовать Xamarin.Essentials, чтобы открыть файл в браузере. И вы должны указать возможность privateNetworkClientServer в манифесте. Для получения дополнительной информации, пожалуйста, перейдите по этой ссылке 1038 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...