Flex 4 mobile ios从浏览器中的应用程序属性打开文件

时间:2013-11-21 16:12:32

标签: actionscript-3 flex mobile flex4 flex4.5

我正在应用程序存储目录中保存文件,我想通过执行navigateToURL(新的URLRequest(file.nativePath))使用ios浏览器打开它。但文件没有打开。我知道它应该有效,因为如果我导航到谷歌浏览器打开正确。所以问题是我在浏览器中放置文件的文件路径。

有人知道我在浏览器上放置的文件路径是什么,以访问应用程序存储目录中的文件。

2 个答案:

答案 0 :(得分:1)

请参阅apple.stackexchange.com上的Objective-c/iOS - Open local html file with SafariView local HTML files using web browser on iPad。基本上,ios安全模型可以防止这种情况发生。

您可以使用StageWebView

 var webView:StageWebView = new StageWebView();
 webView.stage = this.stage;
 webView.viewPort = new Rectangle( 0, 50, stage.stageWidth, stage.stageHeight );
 webView.loadURL(file.nativePath); // or file.url

StageWebView显示在应用程序中所有其他组件的顶部,因此您需要留出一个边距(如上面包含的50像素偏移量),以留出一个按钮来关闭StageWebView。

另请参阅StageWebView docs

答案 1 :(得分:1)

您的路径不正确是正确的。基本上,File.nativePathFile.url都会为您提供使用app://app-storage://(或其他任意数量)的网址,这两者都与应用本身有关。当您尝试在浏览器或StageWebViewStageVideo中打开该链接时,该链接将相对于浏览器/视频播放器而非您的应用。这就是为什么你无法正确链接文件。

谢天谢地,有一个简单的解决方案。我在很久以前的Adobe论坛帖子中发现了这个(可能被认为是“黑客”,但它有效)。我希望我有一个来源,但我没有:

trace( new File( file.nativePath ).url );

试试吧。它基本上使用文件的实际本机路径创建一个新文件。此文件的URL是文件的完整路径,而不是以任何方式相对于应用程序。正如Brian所提到的,你可能最终需要使用StageWebView,但这会给你正确的路径。

快速说明,如果我没记错的话,这在Android上无效。在Android上,您希望直接使用nativePathurl。但是这个小小的解决方法可以在iOS上运行(我现在在应用程序商店中使用的应用程序正在使用它而没有问题)