Android中的webStageView本地HTML路径

Posted

技术标签:

【中文标题】Android中的webStageView本地HTML路径【英文标题】:webStageView local HTML path in Android 【发布时间】:2011-10-12 20:19:39 【问题描述】:

我正在尝试在 webStageView 的实例中加载本地 html(存在于项目的文件夹结构中)。虽然这在 windows 和 ipad/iphone 中运行良好 - 它无法在 android 中找到文件(仅在 2.2 中尝试过)

File.applicationDirectory.url 返回“app:” File.applicationStorageDirectory.url 返回“app-storage:”

File.applicationDirectory.nativePath 返回一个空字符串,如 Adob​​e 文档中所述。

问题是 webview 给出了“网页不可用,app:/test/index.html not found”错误。有没有办法获取完整路径,或“强制”浏览器理解该应用:指的是特定文件夹?

谢谢!

【问题讨论】:

我通过使用指向SD卡的documentsDirectory暂时“修复”了这个问题。相当黑客,但工作正常(当然是暂时的) 【参考方案1】:

作为Adobe help states:

不支持 app: 和 app-storage: 方案。

ios 上,您的代码可以完美运行,但在 Android 上,您必须使用一些像您这样的 hacky 实现来实现它,因为与 StateWebView 从这些目录加载 url 相关的安全问题。另一种解决方案是将您的 app: 或 app-storage: 文件复制到一个临时文件中,然后将该临时文件 url 加载到 StageWebView:

var htmlFile:File = File.applicationDirectory.resolvePath(url);
var workingFile:File = File.createTempFile();
htmlFile.copyTo(workingFile, true);
stageWebView.loadURL(workingFile.url);

编辑:另一种解决方案可能是将您的 html 内容编码到 .as 文件中并使用 StageWebView.loadString() 方法。请记住,您必须为 Android 设备对该字符串进行编码。

【讨论】:

【参考方案2】:

我会在几天内解决这个问题。文件:URL 方案是指客户端计算机上的文件。文件中没有主机名:scheme;您只需提供文件的路径。因此,本地计算机上的文件将是 file:///~User/2ndFile.html。注意三个斜线; URL 的主机名部分为空,因此路径开头的斜杠紧跟 URL 开头的双斜杠。您还需要扩展用户的路径; ~ 不在文件中展开:URL。因此,您需要 file:///home/User/2ndFile.html(在大多数 Unix 上)、file:///Users/User/2ndFile.html(在 Mac OS X 上)或 file:///C:/用户/用户/2ndFile.html(在 Windows 上)。 该解决方案在我的应用程序中完美运行。

【讨论】:

以上是关于Android中的webStageView本地HTML路径的主要内容,如果未能解决你的问题,请参考以下文章

SKProduct 中的本地化标题为零

在 React Native Image 组件中加载本地图像

2020-2021Android中高级面试题大全

Android - webview 中的本地图像

Android中的网络编程

Android XML布局中的xmlns:tools是啥意思?