我在JavaFX中试过这段代码:
@FXML
private WebView contenedorWeb;
URL urlGoogleMaps = getClass().getResource("MapaHtml.html");
webengine=contenedorWeb.getEngine();
webengine.load(urlGoogleMaps.toExternalForm());
JavaFX中的工作正常,但是当我在Android中使用此metod运行时:https://bitbucket.org/javafxports/android/wiki/Building%20and%20deploying%20JavaFX%20Applications
在电话中找不到html文件,出现警告:
Web page not available
The Web page at jar:file:/data/data/com.hello/app_dex/Application_resources.jar!/controller/MapaHtml.html might be temporarily down or it may have moved permanently to a new wed address
(com.hello是包(-PPACKAGE))
任何想法?
问候
答案 0 :(得分:0)
我遇到了同样的问题,经过一天的尝试,我终于找到了解决方案。 我不知道为什么它在Android和普通JavaFX中的工作方式不同,但是在解决方法之后节省了我的一天。
File file = null;
String resource = "/pl/dur/client/Map.html";
URL res = getClass().getResource(resource);
if (res.toString().startsWith("jar:")) {
try {
InputStream input = getClass().getResourceAsStream(resource);
file = new File("/data/data/pl.dur.client/app_dex/Map.html");
file.createNewFile();
OutputStream out = new FileOutputStream(file);
int read;
byte[] bytes = new byte[1024];
while ((read = input.read(bytes)) != -1) {
out.write(bytes, 0, read);
}
}
catch (IOException ex) {
log.error(ex.getStackTrace());
}
}
webEngine.load("file://" + file.getAbsolutePath());
webEngine.setJavaScriptEnabled(true);
getChildren().add(webView);
非常重要的是此路径 /data/data/pl.dur.client/app_dex ,它是您的应用程序的数据路径。我在应用程序数据目录中创建HTML文件的副本,并将此文件传递给WebView。 希望这会有所帮助。