Android中WebView加载sdcard中的html显示
生活随笔
收集整理的這篇文章主要介紹了
Android中WebView加载sdcard中的html显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
場景
Android中使用WebView加載本地html并支持運行JS代碼和支持縮放:
Android中使用WebView加載本地html并支持運行JS代碼和支持縮放_BADAO_LIUMANG_QIZHI的博客-CSDN博客
上面實現webview加載顯示html是將其放在安裝包內,即代碼結構下assets目錄下
如果html中需要訪問的靜態資源,比如照片資源需要更換或者照片資源特別多時,對于安裝包打包和更換維護都不方便。
如果可以將html以及其他資源放在手機所在的sdcard中,會很方便。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi?
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
1、設置webview支持訪問文件數據
??????? WebSettings settings = webView.getSettings();// 設置允許訪問文件數據settings.setAllowFileAccess(true);settings.setAllowContentAccess(true);2、app授予訪問文件的權限
在AndroidManifest.xml中,添加權限
??? <!--? 從SDCard讀取數據權限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>3、將html以及需要的image、js等資源復制到手機的文件管理器sdcard某目錄下
這里使用的是模擬器,注意sdcard的目錄的獲取
這里的html的路徑是
sdcard/map/offLineTileMap.html
3、webview中加載html的路徑修改為
webView.loadUrl("file:///mnt/sdcard/map/offLineTileMap.html");4、activty的完整代碼
package com.badao.androidstudydemo;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.webkit.JavascriptInterface; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Toast;public class WebViewActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_web_view);//獲取webviewWebView webView = findViewById(R.id.webview);//設置為ChromeClinet 才能執行js代碼WebChromeClient webChromeClient = new WebChromeClient();webView.setWebChromeClient(webChromeClient);//增加JS接口//webView.addJavascriptInterface(this,"badao");WebSettings settings = webView.getSettings();//設置開啟js支持settings.setJavaScriptEnabled(true);// 是否支持縮放settings.setSupportZoom(true);//解決跨域問題settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rulesettings.setAllowUniversalAccessFromFileURLs(true);// 設置允許訪問文件數據settings.setAllowFileAccess(true);settings.setAllowContentAccess(true);//加載本地html//加載在線json顯示地圖//webView.loadUrl("file:///android_asset/onLineGeoJsonMap.html");//加載離線json//webView.loadUrl("file:///android_asset/offLineGeoJsonMap.html");//加載本地sdcard中html文件webView.loadUrl("file:///mnt/sdcard/map/offLineTileMap.html");}//JS調用Android方法@JavascriptInterfacepublic void jsCallAndroid(){Toast.makeText(this,"JS調用Android方法成功",Toast.LENGTH_LONG).show();} }5、運行效果
?
總結
以上是生活随笔為你收集整理的Android中WebView加载sdcard中的html显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jquery中使用JsonP加载本地js
- 下一篇: Android中WebView加载sdc