Webview 从资产目录加载 html

Posted

技术标签:

【中文标题】Webview 从资产目录加载 html【英文标题】:Webview load html from assets directory 【发布时间】:2011-03-10 07:22:40 【问题描述】:

我正在尝试从资产目录加载一个 html 页面。我试过了,但是失败了。

public class ViewWeb extends Activity   
    @Override  
    public void onCreate(Bundle savedInstanceState)   
        super.onCreate(savedInstanceState);  
        WebView wv;  
        wv = (WebView) findViewById(R.id.webView1);  
        wv.loadUrl("file:///android_asset/aboutcertified.html");   // fails here
        setContentView(R.layout.webview);  
      

我在 LogCat 中并没有发现任何明显的错误...

【问题讨论】:

查看我的其他答案:***.com/a/8694428/341091 【参考方案1】:

您在设置内容视图之前获取 WebView,因此 wv 可能为空。

public class ViewWeb extends Activity   
        @Override  
        public void onCreate(Bundle savedInstanceState)   
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);  
            WebView wv;  
            wv = (WebView) findViewById(R.id.webView1);  
            wv.loadUrl("file:///android_asset/aboutcertified.html");   // now it will not fail here
          
    

【讨论】:

就是这样。我一开始就是这样,尝试交换它,但现在它可以工作了......酷。 顺便说一句,黑底白字是 Android 的标准外观吗?默认情况下,我所有的表格视图都是黑底白字,但我的 html 设置为白底黑字...我可以更改它们,但不确定要更改哪一个。 在我的网站移动contactus page.html页面中包含一个电子邮件地址,我在android应用程序和seturl中使用webview打开该用户点击电子邮件未知url架构错误的weburl contactus .html页面 如何在android应用程序中使用服务器运行HTML文件?【参考方案2】:

每当你创建活动时,你必须在超级调用之后添加setcontentview(你的布局)。因为setcontentview 将 xml 绑定到您的活动中,所以这就是您获得nullpointerexception 的原因。

 setContentView(R.layout.webview);  
 webView = (WebView) findViewById(R.id.webView1);
 wv.loadUrl("file:///android_asset/xyz.html");

【讨论】:

【参考方案3】:
protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView wb = new WebView(this);
        wb.loadUrl("file:///android_asset/index.html");
        setContentView(wb);
    


keep your .html in `asset` folder

【讨论】:

Andoid doc 引用 assets developer.android.com/tools/projects/index.html 在任何一种情况下都不起作用,除非我的资产文件夹当前位于 main 中的错误文件夹中 我的错误是我在不同位置有一个相同项目的副本,并且添加到错误的副本中,但是这个带有图像的答案是最好的***.com/questions/18302603/…【参考方案4】:

从这里下载源代码 (Open html file from assets android)

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_
 android:background="#FFFFFF"
 android:layout_>

<WebView
 android:layout_
 android:id="@+id/webview"
 android:layout_
 android:layout_margin="10dp"></WebView>
</RelativeLayout>

MainActivity.java

package com.deepshikha.htmlfromassets;
 import android.app.ProgressDialog;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity 

WebView webview;
 ProgressDialog progressDialog;

@Override
 protected void onCreate(Bundle savedInstanceState) 
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 init();
 

private void init()
 webview = (WebView)findViewById(R.id.webview);
 webview.loadUrl("file:///android_asset/download.html");
 webview.requestFocus();

progressDialog = new ProgressDialog(MainActivity.this);
 progressDialog.setMessage("Loading");
 progressDialog.setCancelable(false);
 progressDialog.show();

webview.setWebViewClient(new WebViewClient() 

public void onPageFinished(WebView view, String url) 
 try 
 progressDialog.dismiss();
  catch (Exception e) 
 e.printStackTrace();
 
 
 );
 
 

【讨论】:

以上是关于Webview 从资产目录加载 html的主要内容,如果未能解决你的问题,请参考以下文章

从 Android 动态功能模块将资产加载到 WebView

如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?

Android SDK Webview加载不在资产文件夹中的本地文件

来自资产的 Android WebView JavaScript

Android——PhoneGap/WebView 忽略视口元标记?

可以在 webview 中使用资产目录中的命名颜色吗?