ฉันมีเพจ HTML ท้องถิ่นพร้อมกับแหล่งข้อมูลอื่น ๆ ที่ชี้ (ไฟล์ css และไลบรารี Javascript) ที่ฉันต้องการโหลดลงใน WebView สิ่งนี้จะสำเร็จได้อย่างไร
อาจไม่ใช่วิธีที่ดีที่สุดในการดำเนินการ แต่ฉันยังคงทดลองใช้
ฉันมีเพจ HTML ท้องถิ่นพร้อมกับแหล่งข้อมูลอื่น ๆ ที่ชี้ (ไฟล์ css และไลบรารี Javascript) ที่ฉันต้องการโหลดลงใน WebView สิ่งนี้จะสำเร็จได้อย่างไร
อาจไม่ใช่วิธีที่ดีที่สุดในการดำเนินการ แต่ฉันยังคงทดลองใช้
คำตอบ:
วิธีที่ง่ายที่สุดอาจจะเป็นการใส่ทรัพยากรของเว็บลงในโฟลเดอร์ assetจากนั้นโทร:
webView.loadUrl("file:///android_asset/filename.html");
สำหรับการสื่อสารที่สมบูรณ์ระหว่าง Java และ Webview ดูสิ่งนี้
อัปเดต: โฟลเดอร์สินทรัพย์มักจะเป็นโฟลเดอร์ต่อไปนี้:
<project>/src/main/assets
สามารถเปลี่ยนแปลงได้ในการตั้งค่าการกำหนดค่าโฟลเดอร์สินทรัพย์ใน<app>.iml
ไฟล์ของคุณดังนี้:
<option name=”ASSETS_FOLDER_RELATIVE_PATH” value=”/src/main/assets” />
ดูบทความตำแหน่งที่จะวางโฟลเดอร์ทรัพย์สินใน Android Studio
AndroidManifest.xml
เพื่อแสดงให้เห็น (โดยส่วนตัวแล้วฉันขอแนะนำให้วาง URL / เส้นทางของไฟล์ในทรัพยากรของสตริงและเข้าถึงจากที่นั่นเพื่อให้เส้นทางอยู่กับข้อมูลสตริงอื่น ๆ ทั้งหมดสำหรับโปรแกรม แต่ที่ไม่เกี่ยวข้องโดยตรงกับปัญหาของสินทรัพย์ / การพึ่งพาทรัพยากร)
ตัวอย่างนี้อาจช่วยได้:
WebView lWebView = (WebView)findViewById(R.id.webView);
File lFile = new File(Environment.getExternalStorageDirectory() + "<FOLDER_PATH_TO_FILE>/<FILE_NAME>");
lWebView.loadUrl("file:///" + lFile.getAbsolutePath());
ในกรณีนี้การใช้WebView#loadDataWithBaseUrl()
ดีกว่าWebView#loadUrl()
!
webView.loadDataWithBaseURL(url,
data,
"text/html",
"utf-8",
null);
url: url / path สตริงที่ชี้ไปยังไดเรกทอรีไฟล์ JavaScript และลิงก์ html ทั้งหมดของคุณมีที่มา ถ้าว่างมันจะว่างเปล่า data: สตริงที่มีไฟล์ hmtl ของคุณอ่านด้วย BufferedReader
ข้อมูลเพิ่มเติม: WebView.loadDataWithBaseURL (java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)
คำตอบที่ยอมรับไม่ได้สำหรับฉันนี่คือสิ่งที่ได้ผลสำหรับฉัน
WebSettings webSetting = webView.getSettings();
webSetting.setBuiltInZoomControls(true);
webView1.setWebViewClient(new WebViewClient());
webView.loadUrl("file:///android_asset/index.html");