gpt4 book ai didi

windows - 在 Cordova 的 Windows 8 应用程序中的 LocalState 文件夹中显示 PDF 文件

转载 作者:可可西里 更新时间:2023-11-01 09:28:42 33 4
gpt4 key购买 nike

我的应用程序下载 PDF 并将其存储在我的 Windows 8 应用程序的 LocalState 文件夹中。

我在应用程序中有一个链接,我想在用户单击它时显示 PDF。

我尝试在 window.open 调用中使用 ms-appdata:///local/pdfs/filename.pdf 显示它,我还尝试使用 Cordova 内的 InAppBrowser 插件没有运气。此外,我尝试了以下方法:

var uri = new Windows.Foundation.Uri('ms-appdata:///local/pdfs/filename.pdf');
var file = Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri);
Windows.System.Launcher.launchFileAsync(file).done();

我知道文件存在,因为我正在获取文件结果。只是不确定如何允许用户查看它。

最佳答案

根据设计,Windows 上的本地 appdata 文件夹只能供该应用程序或完全信任的桌面应用程序访问(这可能适用于其他平台上的类似沙盒位置)。因此,使用 Launcher.launchFileAsync 启动的 Windows 应用商店应用程序将无法访问该位置(webview 进程也无法访问,它也是沙盒化的)。另一方面,如果桌面应用程序启动,它可能可以访问该文件,但您无法提前判断是否是这种情况。底线是本地应用数据不是让其他应用获取文件的好位置。

您需要将文件保存在其他应用程序可以访问的其他位置。这里有两种方法,这两种方法都需要一些用户交互来选择位置,这样他们就可以将 PDF 放在他们想要的任何地方:

  1. 让用户为您的应用选择一个保存文件夹,他们可以选择一次。您将调用 FolderPicker为此,将选定的文件夹保存在 FutureAccessList 中.通过这种方式,您可以让用户选择保存文件夹,这会授予您同意保存在那里的权限,并且通过将其保存在 FutureAccessList 中,您可以在后续 session 中检索它,而无需再次询问用户。引用File Picker SampleFile Access Sample了解更多。

  2. 让用户使用 FilePicker(参见同一示例)为每个单独的文件选择一个保存位置,如果您以后需要它们,您还可以使用访问缓存来保存对这些单独位置的权限。

可能也有适用于这些 API 的 Cordova 插件,但我还没有检查过。无论哪种方式,一旦文件位于可访问的位置,启动文件应该就可以正常工作。

作为替代解决方案,您可以考虑直接在您的应用中呈现 PDF。 Windows 在 Windows.Data.Pdf 中有一个 API , 与 associated sample .可能有一个插件或其他 JS 库也适用于此。

关于windows - 在 Cordova 的 Windows 8 应用程序中的 LocalState 文件夹中显示 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710563/

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