我编写了一个 AIR 应用程序,用于从服务器下载视频和文档。视频在应用程序内部播放,但我希望用户能够在其本机应用程序中打开文档。

我正在寻找一种方法来提示用户打开/另存为存储在应用程序存储目录中的本地文件。我尝试过使用 FileReference + URLRequest 类,但这会引发一个异常,它需要远程 url。

我的最后一招是将文件复制到桌面:\

有帮助吗?

解决方案 2

我能弄清楚如何做到这一点而不只是移动文件并告诉用户的唯一方法是将其传递给浏览器。

navigateToURL(new URLRequest(File.applicationStorageDirectory.nativePath + "/courses/" + fileName));

其他提示

您可以使用新的 openWithDefaultApplication(); File 类上可用的函数(我相信它仅在 AIR 2 中可用)

例如:

var file:File = File.desktopDirectory.resolvePath(fileLocation);
file.openWithDefaultApplication();

这是 FluorineFx Aperture 框架的第一个版本。

该框架为 AIR 桌面应用程序提供本机操作系统集成(仅限 Windows)支持。

该框架以非侵入式方式扩展 Adob​​e AIR 应用程序:只需将提供的库与您的 AIR 应用程序一起重新分发,框架将在运行时自动挂接到您的应用程序中。

特征

  • 使用提供的 apsystem 库启动本机应用程序和文档
  • 使用提供的 apimaging 库截取整个屏幕
  • 使用提供的 apoutlook 库从 Air 应用程序访问 Outlook 联系人

http://aperture.fluinefx.com/

目前 adobe 不支持在默认应用程序中打开文件。将其传递给浏览器似乎是使其工作的唯一方法。

但是,您可以使用 FileStream 并使用一些 javascript 编写一个小 html 文件,将 iframe 的位置设置到该文件,然后在 100 毫秒左右调用 window.close()。然后在浏览器中打开该文件。

对我来说是:

var request:URLRequest = new URLRequest();
request.url = file.url;
navigateToURL(request, "_blank");

navigateToURL(file.nativePath) 不起作用,因为路径“/users/mydirectory/...”位于外部 应用沙箱. 。AIR 只允许使用某些协议打开 navigateToURL().

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top