本文目錄一覽:
怎麼實現javascript中調用java類中的方法
為了方便網頁和Android應用的交互,Android系統提供了WebView中JavaScript網頁腳本調用Java類方法的機制。只要調用addJavascriptInterface方法即可映射一個Java對象到JavaScript對象上。
1、映射Java對象到JavaScript對象上
代碼如下:
mWebView = (WebView) findViewById(R.id.wv_content);
mWebView.setVerticalScrollbarOverlay(true);
final WebSettings settings = mWebView.getSettings();
settings.setSupportZoom(true);
//WebView啟用Javascript腳本執行
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//映射Java對象到一個名為”js2java“的Javascript對象上
//JavaScript中可以通過”window.js2java”來調用Java對象的方法
mWebView.addJavascriptInterface(new JSInvokeClass(), “js2java”);
代碼如下:
/**網頁Javascript調用接口**/
class JSInvokeClass {
public void back() {
activity.finish();
}
}
2、JavaScript調用Java對象示例
調用上述JSInvokeClass類對象的back方法,如下:
複製代碼 代碼如下:
window.js2java.back();
如何在JAVASCRIPT調用Android JAVA函數
首先是網頁:
%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%
!DOCTYPE HTML
html
head
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
titlejs和android相互調用/title
head
script type=”text/javascript” language=”javascript”
//調用java方法jsCallJava()
function showHtmlcallJava() {
var str = window.android.jsCallJava();
document.getElementById(“info1”).value = str;
}
//調用java方法jsCallJavaWithParams(String var),帶參數
function showHtmlcallJava2() {
var str = window.android.jsCallJavaWithParams(“Devin Chen”);
document.getElementById(“info2”).value = str;
}
//提供給java調用的方法
function show() {
document.getElementById(“id_input”).value = “Java調用Html中的方法”;
}
//提供給java調用的方法,帶參數
function showWithParam(param) {
document.getElementById(“id_input2”).value = “Java調用Html中的方法: ” + param;
}
/script
/head
body
input id=”info1″ style=”width: 90%” type=”text” value=”null” /br
input type=”button” value=”Html調用Java方法” onclick=”showHtmlcallJava()” /br
input id=”info2″ style=”width: 90%” type=”text” value=”null” /br
input type=”button” value=”Html調用帶參數的Java方法” onclick=”showHtmlcallJava2()” /br
input id=”id_input” style=”width: 90%” type=”text” value=”null” /br
input type=”button” value=”Java調用Html方法” onclick=”window.android.javaCallJavaScript()” /br
input id=”id_input2″ style=”width: 90%” type=”text” value=”null” /br
input type=”button” value=”Java調用帶參數的Html方法” onclick=”window.android.javaCallJavaScriptWithParams()” /
/body
/html
Android部分的布局就一個WebView,MainActivity源代碼:
/**
* java方法和javascript方法的相互調用
*/
public class MainActivity extends AppCompatActivity {
private static final String url = “”;
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mWebView = (WebView) findViewById(R.id.web_main);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName(“utf-8”);
mWebView.loadUrl(url);
mWebView.setWebViewClient(new WebViewClient());
//這兩句是必須的,”android”就是jsp中調用方法時window後面的對象
Object obj = getObject();
mWebView.addJavascriptInterface(obj, “android”);
}
private Object getObject() {
Object obj = new Object() {
/**
* html中的JavaScript調用Java方法
* 註解是必須的
* @return
*/
@JavascriptInterface
public String jsCallJava() {
return “JavaScript調用Java方法”;
}
/**
* html中的JavaScript調用帶參數的Java方法
* 註解是必須的
* @return
*/
@JavascriptInterface
public String jsCallJavaWithParams(String var) {
return “JavaScript調用帶參數的Java方法” + var;
}
/**
* java調用html中的方法,遺憾的是不知道有什麼辦法可以拿到返回值
*/
@JavascriptInterface
public void javaCallJavaScript() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(“javascript:show()”);
}
});
}
/**
* java調用html中的方法,並且傳遞參數,這個有大用
*/
@JavascriptInterface
public void javaCallJavaScriptWithParams() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl(“javascript:showWithParam(‘baoge’)”);
}
});
}
};
return obj;
}
}
js怎麼調用JAVA方法
一般的瀏覽器中是無法通過js調用本地java程序的,但是可以調用嵌入到網頁的applet的方法。交互方式如下:
applet codebase = “.” width = “400” height = “400”
name= “MyApplet” code = “test.applets.MyApplet1.class”
script
// js訪問applet屬性:document.appletName.appletField (屬性必須是public的)
// js訪問Applet方法:document.appletName.appletMethod (方法必須是public的)
function showLable{
// 調用test.applets.MyApplet1類的invokeByJS方法
document.applets[“MyApplet”].invokeByJS(‘myvalue’);
}
/script
原創文章,作者:UCLT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/149432.html