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
- Android webview JS 互動AndroidWebViewJS
- WebView和js的互調WebViewJS
- WebView詳解與簡單實現Android與H5互調WebViewAndroidH5
- 短視訊開發,Android和JS互調實現圖片傳遞AndroidJS
- js 與WKWebView 互動JSWebView
- Android 原生和 JS 互動實踐AndroidJS
- Flutter 與 Android 的互動FlutterAndroid
- flash如何與js互動?JS
- Android與WebView資料互動AndroidWebView
- React Native與Android通訊互動React NativeAndroid
- Android與Flutter混合開發-UI互動AndroidFlutterUI
- flutter webView 使用以及與 js 互操作FlutterWebViewJS
- Flutter WebView與JS互動簡易指南FlutterWebViewJS
- WKWebView和WebView與JS的互動方式WebViewJS
- Android SDK使用了JS橋接方法實現與H5互動 混淆問題AndroidJS橋接H5
- weex與android互動初步接入,遇到的坑Android
- WebView與JS的互動,以及注意事項WebViewJS
- iOS與JS互動之UIWebView-JavaScriptCore框架iOSJSUIWebViewJavaScript框架
- Android 與 JavaScript 互動 支援的資料型別AndroidJavaScript資料型別
- iOS與JS互動之UIWebView協議攔截iOSJSUIWebView協議
- JS原生互動JS
- GraphQL.js 與服務端互動的新方式JS服務端
- Android WebView:這是一份 詳細 & 易懂的WebView學習攻略(含與JS互動、快取構建等)AndroidWebViewJS快取
- flutter和Android原生互動FlutterAndroid
- Android FlatBuffers資料互動Android
- Android ReactNative資料互動AndroidReact
- Cordova JS OC互動方法JS
- WebViewJavascriptBridge JS和OC互動WebViewJavaScriptJS
- JockeyJS——優秀的WebView與JS互動開源庫使用和解析JSWebView
- android4.4調整音量調節速度Android
- 使用 JSBridge 與原生 IOS、Android 進行互動(含 H5、Android、IOS 端程式碼,附 Demo)JSiOSAndroidH5
- Android一種翻板式互動效果Android
- android效能調優詳解Android
- WKWebView詳解&WKWebVieW和JS互動WebViewJS
- Buffer 與 Mat 互轉
- QImage 與 Mat 互轉
- Vue和Node.js互動之tokenVueNode.js
- 《互動設計》作業-問卷調查