AndroidWebView與JavaScript程式碼互動
- 首先先準備一段網頁程式碼
String DATA = "<p> 為加快推進2017年度自治區水土保持重點工程前期工作,按照水利廳《關於做好2017年度水土保持重點工程專案前期工作的通知》要求,2017年4月27日,水利廳水保處一行三人在趙巨集新副處長的帶領下。對昌吉州2017年度水土保持重點工程前期工作開展情況進行了監督檢查。 <br>
"
+ " 首先,檢查組一行對瑪納斯縣旱卡子灘哈薩克鄉閩瑪生態村進行了實地調研,該村是全疆第一個以“綠色、生態、宜居”為設計理念而高標準建設的牧民定居工程,工程建設與當地自然景觀相協調,基本實現人與自然的和諧共處,經濟社會的可持續發展,生態環境的良性迴圈。“十二五”期間,水利廳在該區域已安排了兩期水土保持綜合治理工程建設,治理水土流失面積14平方公里,蓄水保土效益、生態效益和社會效益顯著。 <br>
"
+ " 隨後,檢查組對擬選定列入2017年水土保持重點工程建設計劃中的瑪納斯縣沙河小流域水土保持綜合治理工程專案區進行了現場檢視,詳細瞭解了專案實施方案的編報、審查和審批工作情況,及專案區選址、建設規模及投資等情況,實施方案編制單位專案負責人員在現場詳細介紹了工程實施方案的設計情況,聽取了昌吉州水利局和瑪納斯縣水利局有關負責同志對實施方案設計總體思路、治理措施佈設、及如何將水土保持重點治理專案與閩瑪生態村周邊生態建設工程項結合的介紹後,檢查組認為,瑪納斯縣沙河小流域水土保持綜合治理工程專案區選址合理可行,與前兩期已實施的專案結合並集中連片實施,符合水土保持綜合治理的要求。 <br>
"
+ " 現場檢查後,檢查組一行與昌吉州水利局、瑪納斯縣水利局的有關領導及專案實施方案設計單位的設計人員進行了座談,在結合了閩瑪生態村規劃和建設的經驗後一致認為:水土保持綜合治理工程是社會經濟發展的要求,是落實習近平總書記系列講話中“寧要綠水青山,不要金山銀山”重要思想的重要舉措,前期工作尤為重要,一是要按照“統一規劃、分步實施、穩步推進”的原則和構建“生態修復、生態治理、生態保護”三道水土保持防線的思路進行建設;二是要將人與自然和諧相處的理念、以人為本的理念、可持續發展的理念以及保護自然生態等新理念貫穿進水土保持綜合治理工程中,使水土保持工作突出生態優先,治理措施與自然景觀相協調;三是要加大水土保持宣傳力度,讓水土保持走進千家萬戶、走進學校課堂,讓越來越多的人瞭解水土保持工作,逐漸增強水土生態保護意識;四是要在管理上層層落實責任主體,嚴格按照水土保持重點工程建設管理程式要求做好洋沙小流域水土保持綜合治理工程建設,同時,要加強與相關部門的配合和溝通,使各方面的資金捆綁使用,突顯規模效益。</p>
"
+ "<p> <br>
"
+ "<img style="WIDTH: 263px; HEIGHT: 156px" border="0" width="675" height="472" src="http://www.xjslt.gov.cn/static/ewebeditor/uploadfile/img3/20170505130428623001.jpg"> <img style="WIDTH: 256px; HEIGHT: 159px" border="0" width="775" height="745" src="http://www.xjslt.gov.cn/static/ewebeditor/uploadfile/img3/20170505130451341001.jpg"> <img style="WIDTH: 216px; HEIGHT: 158px" border="0" width="711" height="676" src="http://www.xjslt.gov.cn/static/ewebeditor/uploadfile/img3/20170505130538948001.jpg"><br>
"
+ "<br>
"
+ "<br>
"
+ "</p>";
- 建立工程,並在佈局檔案設定WebView以及在顯示的Activity完成findViewById()操作。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mazaiting.webviewtest.MainActivity"
>
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = (WebView) findViewById(R.id.webView);
}
- 載入網頁,執行這段程式碼時,要新增網路許可權,因為資料中含有網路圖片。
webView.loadData(DATA,"text/html;charset=UTF-8", "UTF-8");
- 設定WebView與JavaScript互動,建立一個類,類中建立一個方法,並新增@JavascriptInterface註解。
public class JavaScriptInterface{
@JavascriptInterface
public void openImage(String path){ // 獲取到圖片連結,函式內執行自己的想要執行的邏輯
Toast.makeText(MainActivity.this, path, Toast.LENGTH_SHORT).show();
}
}
- WebView圖片點選程式碼配置
final WebView webView = (WebView) findViewById(R.id.webView);
/**
* 處理將Html中的網頁圖片點選
*/
// 1. 獲取WebView的設定物件
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
// 3. 設定允許JavaScript彈窗
settings.setJavaScriptCanOpenWindowsAutomatically(true);
// 4. 防止中文亂碼
settings.setDefaultTextEncodingName("UTF-8");
// 5. 載入網頁
webView.loadData(DATA,"text/html;charset=UTF-8", "UTF-8");
// 6. 載入JavaScript
webView.addJavascriptInterface(new JavaScriptInterface(), "imageListener");
// 7. 設定WebView客戶端
webView.setWebViewClient(new WebViewClient(){
/**頁面載入完成*/
@Override public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 這段JavaScript函式的功能就是註冊監聽,遍歷所有的img標籤,並新增
// onClick函式,函式的功能是在圖片點選的時候呼叫本地Java介面並傳遞url過去
webView.loadUrl("javascript:(function(){" +
"var obj = document.getElementsByTagName("img");" +
"for(var i=0;i<obj.length;i++){" +
"obj[i].onclick=function(){" +
"window.imageListener.openImage(this.src)}" +
"}" +
"})()");
}
});
相關文章
- Cordova外掛中JavaScript程式碼與Java的互動細節介紹JavaScript
- Android 原生 WebView 與 JavaScript 互動AndroidWebViewJavaScript
- C# 與 javascript 簡單互動C#JavaScript
- Android中程式與Service互動的方式——互動方式Android
- Android WebView —— Java 與 JavaScript 互動總結AndroidWebViewJavaScript
- Android混合開發之WebView與Javascript互動AndroidWebViewJavaScript
- Android 與WebView中的js程式碼的互動記錄AndroidWebViewJS
- iOS開發-javaScript互動iOSJavaScript
- Android 與 JavaScript 互動 支援的資料型別AndroidJavaScript資料型別
- 2-程式與使用者互動
- 深入淺析React Native與web的基本互動(附程式碼)React NativeWeb
- 在 go websocket server 與 javascript websocket client 互動中使用 flatbuffersGoWebServerJavaScriptclient
- iOS javascript與object-c的互動(TSY版本-就是本人)iOSJavaScriptObject
- JavaScript和CSS的互動方法JavaScriptCSS
- Python與C++互動程式設計PythonC++程式設計
- 程式碼互審
- javascript動態建立指定行與列table表格程式碼例項JavaScript
- js 與WKWebView 互動JSWebView
- 互動與關係
- MySQL 與OS互動MySql
- WKWebView與JS互動WebViewJS
- JavaScript水平無縫滾動程式碼JavaScript
- JavaScript誰動了你的程式碼JavaScript
- JavaScript浮動廣告程式碼例項JavaScript
- JavaScript運動框架程式碼例項JavaScript框架
- 原生App與javascript互動之JSBridge介面原理、設計與實現APPJavaScriptJS
- JavaScript入門篇--請和我互動JavaScript
- Android中Java和JavaScript互動AndroidJavaScript
- 互動式指令碼指令碼
- 微互動(五)——微互動的迴圈與模式模式
- Java與Excel的互動!-JavaExcel
- Android 與前端互動Android前端
- Lua 與 ObjC 的互動OBJ
- webview與JS的互動WebViewJS
- Android中程式與Service互動的方式——綜述Android
- Android中程式與Service互動的方式——總結Android
- 動態載入javascript指令碼程式碼例項JavaScript指令碼
- Javascript中的Trait與程式碼重用JavaScriptAI