LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

Android中Java和JavaScript交互

admin
2014年11月24日 21:52 本文熱度 7160
Android提供了一個很強大的WebView控件用來處理Web網頁,而在網頁中,JavaScript又是一個很舉足輕重的腳本。本文將介紹如何實現Java代碼和Javascript代碼的相互調用。

如何實現


實現Java和js交互十分便捷。通常只需要以下幾步。



  • WebView開啟JavaScript腳本執行

  • WebView設置供JavaScript調用的交互接口。

  • 客戶端和網頁端編寫調用對方的代碼。

本例代碼


為了便于講解,先貼出全部代碼


Java代碼

lineos:false





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.example.javajsinteractiondemo;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainActivity extends Activity {
private static final String LOGTAG = "MainActivity";
@SuppressLint("JavascriptInterface")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final WebView myWebView = (WebView) findViewById(R.id.myWebView);
WebSettings settings = myWebView.getSettings();
settings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new JsInteration(), "control");
myWebView.setWebChromeClient(new WebChromeClient() {});
myWebView.setWebViewClient(new WebViewClient() {

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
testMethod(myWebView);
}

});
myWebView.loadUrl("file:///android_asset/js_java_interaction.html");
}

private void testMethod(WebView webView) {
String call = "javascript:sayHello()";

call = "javascript:alertMessage(\"" + "content" + "\")";

call = "javascript:toastMessage(\"" + "content" + "\")";

call = "javascript:sumToJava(1,2)";
webView.loadUrl(call);

}

public class JsInteration {

@JavascriptInterface
public void toastMessage(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
}

@JavascriptInterface
public void onSumResult(int result) {
Log.i(LOGTAG, "onSumResult result=" + result);
}
}

}

前端網頁代碼

lineos:false js_java_interaction.html





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<script type="text/javascript">
function sayHello() {
alert("Hello")
}

function alertMessage(message) {
alert(message)
}

function toastMessage(message) {
window.control.toastMessage(message)
}

function sumToJava(number1, number2){
window.control.onSumResult(number1 + number2)
}
</script>
Java-Javascript Interaction In Android
</html>


調用示例


js調用Java


調用格式為window.jsInterfaceName.methodName(parameterValues) 此例中我們使用的是control作為注入接口名稱。

lineos:false





1
2
3
4
5
6
7
function toastMessage(message) {
window.control.toastMessage(message)
}

function sumToJava(number1, number2){
window.control.onSumResult(number1 + number2)
}

Java調用JS


webView調用js的基本格式為webView.loadUrl(“javascript:methodName(parameterValues)”)


調用js無參無返回值函數

lineos:false





1
2
String call = "javascript:sayHello()";
webView.loadUrl(call);

調用js有參無返回值函數


注意對于字符串作為參數值需要進行轉義雙引號。

lineos:false













該文章在 2014/11/24 21:52:29 編輯過
1
2
String call = "javascript:alertMessage(\"" 
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日本最新一区二区三区在线 | 久久综合五月丁香久久激情 | 日韩高清亚洲日韩精品一区二区 | 亚洲精品第一国产综合亚AV | 色婷婷色综合缴 | 亚洲狠狠爱综合影院婷婷 |