我也尝试样本,从谷歌代码,并与WebView等资源,但是当我尝试这样做我自己的代码,这是行不通的演示给我。

欲负载myfile.html其中我把资产文件夹,并使用:

private WebView myWebView;

myWebView.loadUrl("file:///android_assets/myfile.html");

在仿真器显示误差

  

file:///android_assets/myfile.html该网页不能   加载为:请求的文件没有被发现。   /android_assets/myfile.html

当我把那个文件夹res/raw/并使用:

myWebView.loadUrl("file:///android_res/raw/myfile.html");

那么只有仿真器的Android 2.2 API级8可以加载文件可能,其它旧版本显示相同的错误。我这么想吗?

有没有在应用程序包,其上的所有API版本一起加载现有.html文件的方法吗?

有帮助吗?

解决方案

OK,那是我非常愚蠢的错误。我在这里发表的答案,以防万一有人有同样的问题。

的文件存储在资产正确的路径文件夹是file:///android_asset/*(没有“s”是资产的文件夹,我总是在想它必须有一个“S”)。

和,mWebView.loadUrl("file:///android_asset/myfile.html");工作下的所有API级别。

我还是不明白,为什么mWebView.loadUrl("file:///android_res/raw/myfile.html");仅适用于API 8级。但现在并不重要。

其他提示

粘贴HTML文件的资产项目文件夹文件夹中。 并建立与FOL代码布局文件夹中的XML文件: my.xml:

<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/webview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
    />

在活动添加FOL代码

setContentView(R.layout.my);
    WebView mWebView = null;
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("file:///android_asset/new.html"); //new.html is html file name.

如果您的结构应该是这样的:

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

然后,只需做(的Android web视图:在处理方向更改

    if(WebViewStateHolder.INSTANCE.getBundle() == null) { //this works only on single instance of webview, use a map with TAG if you need more
        webView.loadUrl("file:///android_asset/html/index.html");
    } else {
        webView.restoreState(WebViewStateHolder.INSTANCE.getBundle());
    }

请确保您添加

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
    }

然后,只需使用网址

<html>
<head>
    <meta charset="utf-8">
    <title>Zzzz</title>
    <script src="../scripts/index.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/index.css">

复制)粘贴.html文件中的资产项目的文件夹,并在您的活动添加下面的代码上的onCreate(。

        WebView view = new WebView(this);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl("file:///android_asset/**YOUR FILE NAME**.html");
        view.setBackgroundColor(Color.TRANSPARENT);
        setContentView(view);

您可以手动读取的HTML文件,然后使用web视图的loadDataloadDataWithBaseUrl方法来显示它。

调试汇编是在释放不同之一,因此:

考虑这样的项目文件结构[这种情况下,如果要调试组装]:

src
  |
  debug
      |
      assets
           |
           index.html

您应该调用的index.html到你的WebView这样的:

WebView web=(WebView)findViewById(R.id.web);
web.loadUrl("file:///android_asset/index.html");

布局:

<WebView
android:id="@+id/web"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="top"/>

如此往复,对于推出组装,应该是这样的:

src
  |
  release
        |
        assets
             |
             index.html  
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top