当我在调试和在我的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阅读器。
1条答案
按热度按时间blpfk2vs1#
打包后,安装文件夹为只读。您无法将文件复制到assets文件夹。这在UWP、iOS和Android中是相同的。
您需要从创建应用程序的应用程序数据位置启动它,而不是尝试将其移动到已安装的软件包中。
它可以在不发布的情况下进行调试,因为未打包的应用程序对其工作目录具有完全访问权限。