从assets文件夹打开HTML文件

sal*_*oua 1 android assets webview

我想在我的Android应用程序中打开本地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);
    }
Run Code Online (Sandbox Code Playgroud)

和布局文件:

<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>
Run Code Online (Sandbox Code Playgroud)

我的AndroidMainfest.xml文件中有互联网权限,可以访问互联网:

<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助.谢谢.

Ram*_*ari 6

尝试使用以下代码加载html

"file:///android_asset/enrollment.html" 
Run Code Online (Sandbox Code Playgroud)

代替

"file:///assets/enrollment.html"
Run Code Online (Sandbox Code Playgroud)


Epi*_*rce 6

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

/assets/html/index.html

/assets/scripts/index.js

/assets/css/index.css

然后就做(Android WebView:处理方向更改)

    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());
    }
Run Code Online (Sandbox Code Playgroud)

确保添加

    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);
    }
Run Code Online (Sandbox Code Playgroud)

然后只使用网址

<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">
Run Code Online (Sandbox Code Playgroud)