首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用安卓WebView加载已有的.html文件

用安卓WebView加载已有的.html文件
EN

Stack Overflow用户
提问于 2010-10-27 04:27:43
回答 6查看 143.6K关注 0票数 90

我确实用WebView尝试了谷歌代码中的示例、演示和其他资源,但当我尝试用我自己的代码做这件事时,它对我不起作用。

我想加载我放在assets文件夹中的myfile.html,并使用:

代码语言:javascript
复制
private WebView myWebView;

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

在模拟器上显示错误

无法加载位于file:///android_assets/myfile.html的网页,原因是:找不到请求的文件。/android_assets/myfile.html

当我将该文件放到res/raw/文件夹中并使用:

代码语言:javascript
复制
myWebView.loadUrl("file:///android_res/raw/myfile.html");

然后可能只有仿真器Android2.2API level 8可以加载该文件,其他较旧的版本显示相同的错误。我是不是遗漏了什么?

有没有办法在所有.html版本的应用程序包中加载现有的API文件?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-27 10:41:55

好吧,那是我犯的非常愚蠢的错误。我把答案贴在这里,以防有人遇到同样的问题。

assets文件夹中存储的文件的正确路径是file:///android_asset/* ( assets文件夹没有"s“,我一直认为它必须有一个"s")。

而且,mWebView.loadUrl("file:///android_asset/myfile.html");可以在所有API级别下工作。

我仍然不明白为什么mWebView.loadUrl("file:///android_res/raw/myfile.html");只适用于API8级,但现在已经无关紧要了。

票数 168
EN

Stack Overflow用户

发布于 2015-04-16 22:26:40

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

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

然后就去做( Android WebView: handling orientation changes )

代码语言:javascript
复制
    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());
    }

确保你添加了

代码语言:javascript
复制
    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);
    }

然后只需使用urls

代码语言:javascript
复制
<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">
票数 20
EN

Stack Overflow用户

发布于 2010-12-22 16:31:40

将.html文件粘贴到项目文件夹的assets文件夹中。并在布局文件夹中创建一个xml文件,其fol代码为: my.xml:

代码语言:javascript
复制
<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代码

代码语言:javascript
复制
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.
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4027701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档