我正在使用Codename开发一个应用程序,用于离线查看报告,该报告采用HTML格式,资源包含在单独的文件夹中。应用程序下载HTML并复制资源的文件夹结构,因为它们是HTML中的引用。当我使用普通浏览器打开报告并将其指向" /。cn1"加载并正确显示的文件夹。使用模拟器时,HTML被加载到Codename One Web Browser对象中并显示(我可以看到报告的标题),只是Web浏览器没有加载任何资源。我还将基本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");
这是我目前正在使用的代码。在显示Report Viewer表单后运行。我已经在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设备上运行时,显示成功对话框,尽管在设备上运行搜索时我没有找到它们(我不知道存储一个商店文件的代号)。没有其他代码在设备上的任何地方运行,但是当我自己将HTML文档存储在设备上并使用硬编码引用(即/Storage/emulated/0/Android/data/Report_2.html
)时,我已经取得了成功。 wbBrowser.getTitle()为null /""在设备上运行时。虽然当这行代码在其他地方时,它变成了:page。 Report_2.html的HTML是;
<!DOCTYPE html>
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
答案 0 :(得分:2)
几天之后,我意识到setURL()
需要file://pathname
格式的路径,我使用的是/pathname
,而setURL()
无法使用setPage()
但是当我从文件中读取HTML时,却在.state('app.login', {
url: "/login",
views: {
'menuLogin': {
templateUrl: "templates/login.html",
controller: 'LoginCtrl'
}
}
})
.state('app.signup', {
url: '/signup',
views: {
'menuSingup': {
templateUrl: 'templates/signup.html',
controller: 'LoginCtrl'
}
}
})
上做了。这是用户错误。
答案 1 :(得分:0)
这应该可以在设备上使用,但可能在模拟器上指向错误。
它应该在模拟器中指向的路径是file://home/appName/
,它应该可以正常工作。我建议将URL设置为文件而不是设置HTML,这样可以轻松添加图像,css文件等,更不用说它可能会更快。