代号一个 WebBrowser 正在从 FileSystemStorage 加载 HTML
Codename One WebBrowser loading HTML from FileSystemStorage
我正在开发一个代号为 one 的应用程序,用于离线查看报告,这些报告采用 HTML 格式,资源包含在单独的文件夹中。应用程序下载 HTML 并复制 HTML 中引用的资源文件夹结构。当我使用普通浏览器打开报告并将其指向“/.cn1”文件夹时,它会正确加载和显示。使用模拟器时,HTML 被加载到 Codename One Web Browser object 并显示(我可以看到报告的标题),只是 Web Browser 没有加载任何资源.我还将 Base URL 设置为该文件夹。
WebBrowser wbBrowser = (WebBrowser) findByName("WebBrowser", f);
FileSystemStorage fs = FileSystemStorage.getInstance();
wbBrowser.setPage(getTextFromFile(fs.getAppHomePath() + "/Reports/Report_2.html"), fs.getAppHomePath() + "/Reports/Report_2_files_files");
这是我目前使用的代码。在报告查看器表单显示后 运行s。我已经在 Android Lollipop 中打开有关默认浏览器和 Mozilla Firefox Android 应用程序的报告,它正确显示了包含所有图像和 CSS 的网页,所以我不确定它是否正确一个代号一个安全问题。任何想法将不胜感激。
编辑:我已尝试简化该应用程序,只是 运行 正在编写以下代码;
WebBrowser wbBrowser = (WebBrowser) findByName("WebBrowser", Display.getInstance().getCurrent());
FileSystemStorage fs = FileSystemStorage.getInstance();
fs.mkdir(fs.getAppHomePath() + "[Folder Name]");
Util.downloadUrlToFile("http://[IpAddress]/mobile/admin/Report_2.html", fs.getAppHomePath() + "[Folder Name]/Report_2.html", true);
if (FileSystemStorage.getInstance().exists(fs.getAppHomePath() + "[Folder Name]/Report_2.html") == true) {
wbBrowser.setURL(fs.getAppHomePath() + "[Folder Name]/Report_2.html");
Dialog.show("Success", "File has been downloaded and shown as " + wbBrowser.getTitle(), "Ok", "");
}
else {
Dialog.show("Failiure", "File has not been downloaded", "Ok", "");
}
当 运行 在 Android Lollipop 设备上时,显示成功对话框,尽管我在设备上 运行 搜索时没有找到它们(我不知道在哪里代号一存储文件存储)。设备上的任何地方都没有其他代码 运行ning,但是当我自己在设备上存储 HTML 文档并使用硬编码引用(即 /Storage/emulated/0/Android/data/Report_2.html
)时,我已经成功了。 wbBrowser.getTitle() 在设备上 运行 时为 null/""。虽然当这行代码在其他地方时它变成了 about:page。 Report_2.html 的 HTML 是;
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
这应该可以在设备上运行,但在模拟器上可能指向不正确。
它应该在模拟器中指向的路径是 file://home/appName/
,它应该可以正常工作。我建议将 URL 设置为一个文件,而不是设置 HTML,这将使您可以轻松添加图像、css 文件等,更不用说它可能会更快。
几天后,我发现setURL()
需要一个格式为file://pathname
的路径,我用的是/pathname
,在[=10=上不行] 但是当我从文件中读取 HTML 时在 setPage()
上做了。这是一个用户错误。
我正在开发一个代号为 one 的应用程序,用于离线查看报告,这些报告采用 HTML 格式,资源包含在单独的文件夹中。应用程序下载 HTML 并复制 HTML 中引用的资源文件夹结构。当我使用普通浏览器打开报告并将其指向“/.cn1”文件夹时,它会正确加载和显示。使用模拟器时,HTML 被加载到 Codename One Web Browser object 并显示(我可以看到报告的标题),只是 Web Browser 没有加载任何资源.我还将 Base URL 设置为该文件夹。
WebBrowser wbBrowser = (WebBrowser) findByName("WebBrowser", f);
FileSystemStorage fs = FileSystemStorage.getInstance();
wbBrowser.setPage(getTextFromFile(fs.getAppHomePath() + "/Reports/Report_2.html"), fs.getAppHomePath() + "/Reports/Report_2_files_files");
这是我目前使用的代码。在报告查看器表单显示后 运行s。我已经在 Android Lollipop 中打开有关默认浏览器和 Mozilla Firefox Android 应用程序的报告,它正确显示了包含所有图像和 CSS 的网页,所以我不确定它是否正确一个代号一个安全问题。任何想法将不胜感激。
编辑:我已尝试简化该应用程序,只是 运行 正在编写以下代码;
WebBrowser wbBrowser = (WebBrowser) findByName("WebBrowser", Display.getInstance().getCurrent());
FileSystemStorage fs = FileSystemStorage.getInstance();
fs.mkdir(fs.getAppHomePath() + "[Folder Name]");
Util.downloadUrlToFile("http://[IpAddress]/mobile/admin/Report_2.html", fs.getAppHomePath() + "[Folder Name]/Report_2.html", true);
if (FileSystemStorage.getInstance().exists(fs.getAppHomePath() + "[Folder Name]/Report_2.html") == true) {
wbBrowser.setURL(fs.getAppHomePath() + "[Folder Name]/Report_2.html");
Dialog.show("Success", "File has been downloaded and shown as " + wbBrowser.getTitle(), "Ok", "");
}
else {
Dialog.show("Failiure", "File has not been downloaded", "Ok", "");
}
当 运行 在 Android Lollipop 设备上时,显示成功对话框,尽管我在设备上 运行 搜索时没有找到它们(我不知道在哪里代号一存储文件存储)。设备上的任何地方都没有其他代码 运行ning,但是当我自己在设备上存储 HTML 文档并使用硬编码引用(即 /Storage/emulated/0/Android/data/Report_2.html
)时,我已经成功了。 wbBrowser.getTitle() 在设备上 运行 时为 null/""。虽然当这行代码在其他地方时它变成了 about:page。 Report_2.html 的 HTML 是;
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
这应该可以在设备上运行,但在模拟器上可能指向不正确。
它应该在模拟器中指向的路径是 file://home/appName/
,它应该可以正常工作。我建议将 URL 设置为一个文件,而不是设置 HTML,这将使您可以轻松添加图像、css 文件等,更不用说它可能会更快。
几天后,我发现setURL()
需要一个格式为file://pathname
的路径,我用的是/pathname
,在[=10=上不行] 但是当我从文件中读取 HTML 时在 setPage()
上做了。这是一个用户错误。