xamarin 发布时UWP打开PDF失败

gr8qqesn  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(139)

当我在调试和在我的PC上时,我有这个方法工作得很好:

public void ShowPdf(byte[] pdfInfo)
{
    ...
    Device.BeginInvokeOnMainThread(async () =>
    {
        var intentHelper = DependencyService.Get<IIntentHelper>();
        intentHelper.File(pdfInfo);
    });
}

依赖关系服务是这样的:

[assembly: Xamarin.Forms.Dependency(typeof(IntentHelperUWP))]
namespace myApp.UWP
{
    class IntentHelperUWP : IIntentHelper
    {
        public async Task FileAsync2(byte[] array)
        {
            var baseUrl = DependencyService.Get<IBaseUrl>().Get();
            StorageFolder storageFolder = ApplicationData.Current.LocalFolder; 
            StorageFile pdfFile = await storageFolder.CreateFileAsync("test.pdf", CreationCollisionOption.ReplaceExisting);
            //write data to created file
            await FileIO.WriteBytesAsync(pdfFile, array);
            //get asets folder
            StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFolder assetsFolder = await appInstalledFolder.GetFolderAsync("Assets");
            //move file from local folder to assets
            await pdfFile.MoveAsync(assetsFolder, "test.pdf", NameCollisionOption.ReplaceExisting);

         Device.BeginInvokeOnMainThread(async () =>
         {
             Windows.System.LauncherOptions options = new Windows.System.LauncherOptions();
             options.DisplayApplicationPicker = true;
             options.ContentType = "application/pdf";

             Windows.System.Launcher.LaunchFileAsync(pdfFile);
         });  
    }

为什么在Visual Studio的调试中可以正常工作,但在我发布时却不行?我尝试发布发布和调试,查看PDF是否设置为内容并在属性中复制所有内容,但每次发布和测试时,下载PDF的按钮都不起作用,但在我的调试中打开了带有PDF的Adode阅读器。

blpfk2vs

blpfk2vs1#

打包后,安装文件夹为只读。您无法将文件复制到assets文件夹。这在UWP、iOS和Android中是相同的。
您需要从创建应用程序的应用程序数据位置启动它,而不是尝试将其移动到已安装的软件包中。
它可以在不发布的情况下进行调试,因为未打包的应用程序对其工作目录具有完全访问权限。

相关问题