在JavaFX到Android中找不到HTML

时间:2014-10-13 19:12:14

标签: android javafx

我在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))

任何想法?

问候

1 个答案:

答案 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。 希望这会有所帮助。