android 加載assets目錄下的靜態html文件案例


1、添加assets目錄

在main目錄下添加assets目錄,如下:

2、再在assets目錄添加一個web目錄,如下:

3、webview加載assets目錄下html靜態文件,代碼如下:

 String url = "file:///android_asset/web/index.html"; webView.loadUrl(url); 

 ps: 路徑是"file:///android_asset/web/index.html",而不是"file:///assets/web/index.html"

4、案例代碼:

package com.example.h5application; import androidx.appcompat.app.AppCompatActivity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.util.Log; import android.webkit.CookieManager; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; String url = "file:///android_asset/web/index.html"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = new CustomWebView(this); WebSettings mWebSettings = webView.getSettings(); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); mWebSettings.setJavaScriptEnabled(true);//設置支持javaScript
        mWebSettings.setUseWideViewPort(true); //將圖片調整到適合webview的大小
        mWebSettings.setLoadWithOverviewMode(true); // 縮放至屏幕的大小
 mWebSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        mWebSettings.setUserAgentString("User-Agent"); mWebSettings.setLightTouchEnabled(true);//設置用鼠標激活被選項
        mWebSettings.setBuiltInZoomControls(true);//設置支持縮放
        mWebSettings.setDomStorageEnabled(true);//設置DOM緩存,當H5網頁使用localStorage時,一定要設置
        mWebSettings.setDatabaseEnabled(true); mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//設置去緩存,防止加載的為上一次加載過的 mWebSettings.setSupportZoom(true);//設置支持變焦
        webView.setHapticFeedbackEnabled(false); mWebSettings.setPluginState(WebSettings.PluginState.ON); mWebSettings.setAllowFileAccess(true); mWebSettings.setAllowContentAccess(true); mWebSettings.setAllowUniversalAccessFromFileURLs(true); mWebSettings.setAllowFileAccessFromFileURLs(true); webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); Log.d("MainActivity","開始加載"); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); Log.d("MainActivity","加載結束"); } // 鏈接跳轉都會走這個方法
 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d("MainActivity","Url:"+ url ); view.loadUrl(url);// 強制在當前 WebView 中加載 url
                return false; } }); //設置響應js 的Alert()函數
        webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); Log.d("MainActivity","newProgress:"+ newProgress ); } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); Log.d("MainActivity","標題:"+ title); } @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this); b.setTitle(""); b.setMessage(message); b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); b.setCancelable(false); b.create().show(); return true; } //設置響應js 的Confirm()函數
 @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this); b.setTitle(""); b.setMessage(message); b.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); b.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { result.cancel(); } }); b.create().show(); return true; } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) {
 result.confirm(); return super.onJsPrompt(view, url, message, message, result); } }); webView.loadUrl(url); setContentView(webView); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM