Android與JS互調
Android傳輸據給JS,首先在AndroidStudio中建立一個專案,在認識目錄下建立一個資料夾為:assets ,之後將寫好的html介面放在這個目錄下,為了介面好看點,我在該目錄下放了一個h5的程式碼檔案,這裡我為了方便就沒有將該html放在Tomcat上。下面是我的html程式碼:
<!DOCTYPE html>
<html>
<head>
<title>Android呼叫js程式碼</title>
</head>
<body>
使用者:<div id="name">遊客</div>
<img src = "girl_14.jpg" width="350px"/>
<button id="but_click" onclick="show()" >點選傳資料給Android</button>
<!-- JS呼叫Android原生方法 Android中的方法為showToast-->
<!--Android呼叫js方法 webView.loaduri("javascript:showUser('"+user+"','"+pswword+"'')") -->
<script type="text/javascript">
function showUser(user,psw) {
document.getElementById("name").innerHTML = user+"密碼:"+psw;
alert(user+psw);
}
</script>
</body>
</html>
下面我在Android佈局檔案裡新增WebView,以及兩個輸入框,為了將賬戶資料傳遞給WebView中的h5介面:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/et_name"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/et_psw"
/>
<Button
android:text="登入"
android:layout_width="match_parent"
android:id="@+id/but_login"
android:layout_height="50dp"
/>
<WebView
android:id="@+id/wb"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</LinearLayout>
下面就是佈局控制元件初始化,這裡最重要的是對WebView的設定,並且將assets下的html檔案載入進來:
webView = (WebView) findViewById(R.id.wb);
webView.loadUrl("file:///android_asset/demo01.html");
webView.setWebChromeClient(new WebChromeClient());
//設定瀏覽器為Android自帶的瀏覽器
webView.addJavascriptInterface(new AndroidInterface(), "android");
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);//必須設定表示支援js
settings.setBuiltInZoomControls(true);
settings.setDefaultFontSize(20);
好了,下面就是當點選登入按鈕時在Android中傳資料給h5:
user = name.getText().toString().trim();
password = psw.getText().toString().trim();
String login = "javascript:showUser('"+user+"','"+password+"')";
Log.e("q", "onClick: "+login );
webView.loadUrl(login);
好了,這樣h5中通過執行js而使h5介面發生改變。
h5中資料通過js傳資料給Android
- 給h5中的按鈕新增點選事件(js執行):
<button id="but_click" onclick="show()" >點選傳資料給Android</button>
<script type="text/javascript">
function show(){
var msg = document.getElementById("name").innerText;
//alert(msg);
window.android.show(msg);
/**
*這裡window是固定的 android是在你Android程式碼中給WebView新增js介面的第二個資料 show(msg)是Android中的呼叫的方法
*
*/
}
</script>
js中的程式碼就是這樣,下面如何在h5中點選後Android如何響應,Android首先就是建立一個js需要呼叫的方法,根據webView.addJavascriptInterface(new AndroidInterface(), "android");這個設定知道建立的類為AndroidInterface類,所以建立一個非靜態內部類,在該類中編寫一個在js中需要呼叫的方法:
class AndroidInterface{
public AndroidInterface(){
}
//由於在api17以後需要用註解申明,所以該方法必須新增下面的註解,api17以前不用申明
@JavascriptInterface
public void show(String msg){
Toast.makeText(MainActivity.this, "Html傳過來資料了"+msg, Toast.LENGTH_SHORT).show();
}
}
好了,基本的js和android之間的互動就完成了,點選檢視原始碼
相關文章
- Android webview 與 js(Vue) 互動AndroidWebViewJSVue
- WebView和js的互調WebViewJS
- Android webview JS 互動AndroidWebViewJS
- WebView詳解與簡單實現Android與H5互調WebViewAndroidH5
- Android中JS與Java的極簡互動庫-SimpleJavaJsBridgeAndroidJSJava
- js 與WKWebView 互動JSWebView
- WKWebView與JS互動WebViewJS
- 隨手記Android JS與Native互動實踐AndroidJS
- 短視訊開發,Android和JS互調實現圖片傳遞AndroidJS
- Android 與前端互動Android前端
- Android 與WebView中的js程式碼的互動記錄AndroidWebViewJS
- webview與JS的互動WebViewJS
- Json物件與Json字串互轉JSON物件字串
- oc 與 js互動之vue.jsVue.js
- Flutter 與 Android 的互動FlutterAndroid
- RN 與android原生互動Android
- Android:是時候掌握WebView與Js的互動技術了AndroidWebViewJS
- oc 與js 的原生互動JS
- Android 原生和 JS 互動實踐AndroidJS
- Android混合開發之WebViewJavascriptBridge實現JS與java安全互動AndroidWebViewJavaScriptJS
- 利用 Native.js 實現 Android 與 HTML 資料的互動JSAndroidHTML
- Android與WebView資料互動AndroidWebView
- Android 原生 WebView 與 JavaScript 互動AndroidWebViewJavaScript
- iOS 與 JS 互動手冊 - JavaScriptCoreiOSJSJavaScript
- iOS 與JS Html常見互動iOSJSHTML
- angularjs與伺服器互動AngularJS伺服器
- Android中程式與Service互動的方式——互動方式Android
- 最全面總結 Android WebView與 JS 的互動方式(含例項Demo)AndroidWebViewJS
- unity3d與android互動Unity3DAndroid
- 13 Android與HTML5互動AndroidHTML
- 2017-12-04(週一)JS和OC互調JS
- flutter webView 使用以及與 js 互操作FlutterWebViewJS
- Flutter使用JsBridge與WebView互動FlutterJSWebView
- Flutter WebView與JS互動簡易指南FlutterWebViewJS
- WKWebView和WebView與JS的互動方式WebViewJS
- JS 與 OC 互動的三種方法JS
- Android與Flutter混合開發-UI互動AndroidFlutterUI
- React Native與Android通訊互動React NativeAndroid