2015-04-29 71 views
1

我想在我的Android应用程序中打开本地html文件。从资产文件夹中打开HTML文件

该文件位于我的资产文件夹下。所以我设置了一个WebViewClient并加载我的页面。 但我得到一个“网页不可用”的错误。

这里是我的活动代码:

public class LocalDialogActivity extends Activity { 

    protected WebView webView; 
    private static final String ENROLLMENT_URL = "file:///assets/enrollment.html"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_local_dialog); 

     webView = (WebView)findViewById(R.id.local_dialog_webview); 
     webView.setWebViewClient(new WebViewClient()); 

     webView.getSettings().setUseWideViewPort(true); 
     webView.getSettings().setLoadWithOverviewMode(true); 

     webView.getSettings().setSupportZoom(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.getSettings().setDisplayZoomControls(false); 


     refreshWebView(webView); 

    } 

    public void refreshWebView(View view) { 
     webView.loadUrl(ENROLLMENT_URL); 
    } 

和布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <WebView 
     android:id="@+id/local_dialog_webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</RelativeLayout> 

,我已经在我的AndroidMainfest.xml文件Internet权限可以访问互联网:

<uses-permission android:name="android.permission.INTERNET" /> 

任何帮助将受到欢迎。 谢谢。

+0

你可以发布你的logcat消息吗? –

+0

[如何从android资源文件夹中读取html内容]的可能重复(https://stackoverflow.com/questions/8603222/how-to-read-html-content-from-assets-folder-in-android) – Suhaib

回答

6

尝试使用以下代码加载html

而不是10

"file:///assets/enrollment.html" 
+0

谢谢!这对我有用:) – saloua

1

此代码它的工作

public class WebActivity extends Activity { 
    WebView wv; 

String url="file:///android_asset/sample.html"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web); 
    wv=(WebView)findViewById(R.id.webUrl_WEB); 



WebSettings webSettings = wv.getSettings(); 
    wv.getSettings().setLoadWithOverviewMode(true); 
    wv.getSettings().setUseWideViewPort(true); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setPluginState(PluginState.ON); 


    wv.setWebViewClient(new myWebClient()); 

    wv.loadUrl(url); 
} 




public class myWebClient extends WebViewClient { 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     // TODO Auto-generated method stub 

     view.loadUrl(url); 
     return true; 

    } 
} 

您必须能够访问互联网AndroidMainfest.xml文件权限:

​​

您需要的资产划归该sample.html文件文件夹

+0

谢谢,但我已在我的清单文件中设置了Internet权限。 – saloua

5

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

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

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

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); 
    } 

然后,只需使用URL地址

<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"> 
2

我认为,它最好使用 “原始” 文件夹中。该代码正常工作。从这里

InputStream is = getResources().openRawResource(R.raw.html_file); 

    try { 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     String str = new String(buffer); 
     }catch (IOException e){ 
      e.printStackTrace(); 
     } 
     webView.loadDataWithBaseURL("", str, "text/html", "UTF-8", ""); 
0

下载源代码(Open html file from assets android

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(); 
} 
} 
}); 
} 
} 

谢谢!

相关问题