gpt4 book ai didi

c# - 在 Windows Phone 8 上启动 PDF 阅读器

转载 作者:太空宇宙 更新时间:2023-11-03 21:36:09 25 4
gpt4 key购买 nike

我正在尝试使用以下代码启动 pdf 阅读器,但它不起作用。有人可以帮助我吗?

    private async Task<StorageFile> WriteData(string fileName, byte[] data)
{
StorageFolder folder = ApplicationData.Current.LocalFolder;

StorageFile file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

using (Stream s = await file.OpenStreamForWriteAsync())
{
await s.WriteAsync(data, 0, data.Length);
s.Close();
}

return file;
}

private async Task<bool> OpenPdf(StorageFile file)
{

var uri = new Uri(file.Path, UriKind.RelativeOrAbsolute);
bool result = await Windows.System.Launcher.LaunchUriAsync(uri);

return result;
}

private async void FetchPdf() {
// Fetch pdf bytes to network
//....
StorageFile file = await WriteData("test.pdf", data);

if (file != null) {
bool result = await OpenPdf(file);
if (result)
Debug.WriteLine("Success");
else
Debug.WriteLine("Cannot open pdf file.");
}
}

结果始终为 false,因此不会显示启动器。

我使用了 LaunchUriAsync,因为 LaunchFileAsync 未在 Windows Phone 上实现。

最佳答案

根据 documentation

LaunchUriAsync 在 Windows Phone 8 上不受支持.如果调用它会抛出异常

您可以使用 Windows.System.Launcher.LaunchFileAsync 启动 StorageFile

例如,此代码有效(假定项目中有一个名为 "metro.pdf" 的文件,Build Action 设置为 Content,将 Copy to Output Directory 设置为 Copy if Newer)。

var installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;
var assets = await installedLocation.GetFolderAsync("Assets");
var pdf = await assets.GetFileAsync("metro.pdf");
Windows.System.Launcher.LaunchFileAsync(pdf);

关于c# - 在 Windows Phone 8 上启动 PDF 阅读器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com