我编写了一个从服务器下载视频和文档的 AIR 应用程序。视频在应用程序内播放,但我希望用户能够在其本机应用程序中打开文档。
我正在寻找一种方法来提示用户在应用程序存储目录中存储的本地文件上打开/另存为。我曾尝试使用 FileReference + URLRequest 类,但这会引发需要远程 url 的异常。
我最后的办法就是将文件复制到他们的桌面:\
我编写了一个从服务器下载视频和文档的 AIR 应用程序。视频在应用程序内播放,但我希望用户能够在其本机应用程序中打开文档。
我正在寻找一种方法来提示用户在应用程序存储目录中存储的本地文件上打开/另存为。我曾尝试使用 FileReference + URLRequest 类,但这会引发需要远程 url 的异常。
我最后的办法就是将文件复制到他们的桌面:\
您可以使用 File 类上可用的新openWithDefaultApplication();
功能(我相信它仅在 AIR 2 中可用)
例如:
var file:File = File.desktopDirectory.resolvePath(fileLocation);
file.openWithDefaultApplication();
只有这样我才能弄清楚如何做到这一点,而不仅仅是移动文件并告诉用户将其传递给浏览器。
navigateToURL(new URLRequest(File.applicationStorageDirectory.nativePath + "/courses/" + fileName));
这是 FluorineFx Aperture 框架的第一个版本。
该框架为 AIR 桌面应用程序提供本机操作系统集成(仅限 Windows)支持。
该框架以非侵入方式扩展 Adobe AIR 应用程序:只需将提供的库与您的 AIR 应用程序一起重新分发,在运行时框架将自动挂接到您的应用程序。
特征
目前 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()
。