android - 使用我的应用程序中嵌入的 NanoHttpd 服务器查看 Assets 文件夹中的 index.html

标签 android webserver android-webview

我有一个应用程序(我们称之为主应用程序),它在 Assets 文件夹中有一个 index.html 页面。 index.html 是一个带有一些 JavaScript 的简单 HTML 文件。它不需要 PHP 或 MySql。

我想做的是将 NanoHttpd 服务器嵌入到我的主应用程序中,并在应用程序启动或恢复时自动启动 Nano 服务器,并在我的应用程序中查看我的 index.html 文件。虽然我知道我可以使用

webView.loadUrl("file:///android_asset/index.html"); 

要访问 index.html 文件,在这种情况下不可能这样做。因此需要使用网络服务器。

现在我有一个不同的专用应用程序作为 Web 服务器,它运行在 http://localhost:8080。 .当我打开主应用程序时,它会自动运行。如您所见,为了查看 HTML 文件,您需要启动 Web 服务器,启动它,然后返回主应用程序并启动它。我想要一个解决方案,当我吃完我的主应用程序并开始在 webview 上显示 index.html 内容时,NanoHttpd 服务器会自动启动。这是我的代码,可以完美地使用我的主应用程序和网络服务器

   WebView wv;
   wv = (WebView) findViewById(R.id.webView1);
   WebSettings webSettings = wv.getSettings();
   webSettings.setJavaScriptEnabled(true);
   wv.loadUrl("http://localhost:8080/index.html");   

虽然 O 找不到它的确切文档,但我从以下链接尝试了两种不同的方法

  1. Using NanoHTTPD in Android

  2. http://programminglife.io/android-http-server-with-nanohttpd/

两个都没有用,一个只显示一个白页,而其他的只是给我一个服务器正在运行的响应。

那么如何在我的应用程序启动时自动启动 NanoHttpd 服务器,并自动将 html 文件从我的 Assets 文件夹启动到 Web View ? 如果对 NanoHttpd 的要求太多,是否有另一种方法可以将网络服务器与应用程序一起嵌入并启动 index.html?

最佳答案

鉴于您的 assets 文件夹中的 HTML 结构遵循以下层次结构:

+ src
++ main
+++ assets
+++ java
+++ res

您可以使用以下方法打开不受安全限制的本地文件:

webView.loadUrl("file:///android_asset/index.html");

此外,您还应该设置此项以启用 Javascript 在加载内容之前在本地运行:

webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);

此外,您还可以设置一些其他设置以最适合您的需求,例如:

setBuiltInZoomControls(true);
setSupportZoom(true);
setDefaultTextEncodingName("utf-8"); // support international chars
setUserAgentString("myVeryOwnUserAgent");  // personalize UA

等等。

关于android - 使用我的应用程序中嵌入的 NanoHttpd 服务器查看 Assets 文件夹中的 index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54697024/

相关文章:

android - 在android的webview中显示pdf

android - 当 4.0.4 中的 WebView 很大时,WebView 上的行为非常奇怪

javascript - 如何在 webView 中启用 javascript

android UI 元素没有出现

java - 使用 Java URLConnection 管理 Cookie

angular - 对于小型应用程序,应用程序服务器是否也可以/应该用作 Web 服务器?

github - 使用 emacs-web-server 解析 webhook

python - 在其他计算机上测试Web服务器时,对等方重置连接

java - 从哪里获取 fragment 中的内容?

android - 在 EditText 中只允许 1 个字符,并且在用户输入时始终覆盖