【问题标题】:Android WebView showing blank page for local filesAndroid WebView 显示本地文件的空白页
【发布时间】:2015-04-04 09:13:34
【问题描述】:

当我尝试加载 "file:///android_asset/index.html" 时,我的 android WebView 显示一个空白页面,它完美地加载了其他 URL,例如 "http://twitter.com"

我的活动

public class MainActivity  extends ActionBarActivity  {

    private WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myWebView = (WebView) findViewById(R.id.webview);

        myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");

        myWebView.setWebViewClient(new WebViewClient());
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

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

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
            myWebView.loadUrl("file:///android_asset/index.html");
            return true;
        }
        return false;
    }
}

我的 index.html 文件:

<!DOCTYPE html>
<html>
<head>
    <title>World Tour</title>
    <!-- Sets initial viewport load and disables zooming  -->
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">

    <!-- Makes your prototype chrome-less once bookmarked to your phone's home screen -->
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="mobile-web-app-capable" content="yes">

    <link rel="stylesheet" type="text/css" href="css/style.css">
    <link rel="stylesheet" type="text/css" href="css/ratchet.css">
</head>
<body>
    <header class="bar bar-footer">
        <a href="views/stats.html" data-transition="slide-out"><span class="icon icon-info pull-left" ></span></a>
        <a href="views/add.html" data-transition="slide-in"><span class="icon icon-plus pull-right" ></span></a>
        <h1 class="title">List of previous drive</h1>
    </header>

    <div class="content">
        <div class="card">
            <ul id="drives-list" class="table-view">
                <li class="table-view-divider table-view-cell" ><p class="pull-left">Comments</p><p class="pull-right">Distance</p></li>
            </ul>
        </div>
    </div>

    <script type="text/javascript" src="js/main.js" ></script>
    <script type="text/javascript" src="js/ratchet.js" ></script>
</body>
</html>

感谢您的帮助!

【问题讨论】:

  • 有没有放置 index.html 的文件夹?如果是这样,您还必须在路径中添加该文件夹名称。
  • 它在assets文件夹中,可以通过file:///android_asset/访问
  • 你似乎用对了,不确定..也许尝试清理项目并再次运行..
  • 还是不行。我尝试制作一个新项目,但它仍然无法正常工作。我正在尝试在 Lollipop 下运行它。
  • 好的,我尝试了一个新的简单 html 文件。有效。问题可能与棘轮有关,很久没有更新了。

标签: android html webview


【解决方案1】:

使用以下代码从您的评估文件中获取字符串内容

    public static String getStringFromAssets(String name, Context p_context)
    {
        try
        {
            InputStream is = p_context.getAssets().open(name);
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            String bufferString = new String(buffer);
            return bufferString;
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return null;

    }

并使用以下代码加载内容

String m_data = getStringFromAssets("index.html", this);
webView.loadDataWithBaseURL("file:///android_asset/", m_data, "text/html", "utf-8", null);

希望对你有用!!

【讨论】:

  • 它也不行。我确定页面已加载,因为我可以将 console.log 与 javascript 一起使用,并且可以正常工作。
【解决方案2】:

检查与 html 页面相关的 javascript 代码中是否存在任何错误。如果是这样,android studio 不会指出 js 文件中的错误。

我修复了 js 文件中的错误,并且成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多