本文目錄一覽:
- 1、如何在JAVASCRIPT調用Android JAVA函數
- 2、安卓和javascript交互必須通過webView嗎?可以用安卓的其他控件調用js嗎?還有他們能通過volley交互嗎?
- 3、js給android傳參數怎麼寫
- 4、安卓與js交互時怎樣給js端傳遞數據
- 5、android中webview與js交互
- 6、在Android上怎樣實現JAVA和JS交互
如何在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;
}
}
安卓和javascript交互必須通過webView嗎?可以用安卓的其他控件調用js嗎?還有他們能通過volley交互嗎?
您好,很高興能幫助您,Android中webview和js之間的交互1.android中利用webview調用網頁上的js代碼。Android 中可以通過webview來實現和js的交互,在程序中調用js代碼,只需要將webview控件的支持js的屬性設置為true,,然後通過loadUrl就可以直接進行調用,如下所示:mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl(“javascript:test()”);2. 網頁上調用android中java代碼的方法在網頁中調用java代碼,需要在webview控件中添加javascriptInterface。如下所示:mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(Test.this, “測試調用java”, Toast.LENGTH_LONG).show();} }); } }, “demo”);在網頁中,只需要像調用js方法一樣,進行調用就可以div id=’b’a onclick=”window.demo.clickOnAndroid()”b.c/a/div3. Java代碼調用js並傳參首先需要帶參數的js函數,如function test(str),然後只需在調用js時傳入參數即可,如下所示:mWebView.loadUrl(“javascript:test(‘aa’)”);4.Js中調用java函數並傳參首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設置中間變量,然後進行修改。如下所示:mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandler.post(new Runnable() { public void run() { int j = i;j++;Toast.makeText(Test.this, “測試調用java” + String.valueOf(j), Toast.LENGTH_LONG).show();}});} }, “demo”);然後在html頁面中,利用如下代碼div id=’b’a onclick=”window.demo.clickOnAndroid(2)”b.c/a/div,即可實現調用你的採納是我前進的動力,還有不懂的地方,請你繼續“追問”!如你還有別的問題,可另外向我求助;答題不易,互相理解,互相幫助!
js給android傳參數怎麼寫
webview中js調用本地java方法,這個功能實現起來稍微有點麻煩,不過也不怎麼複雜,首先要對webview綁定javascriptInterface,js腳本通過這個接口來調用java代碼。 contentWebView.addJavascriptInterface(this, “wst”); javainterface實際就是
安卓與js交互時怎樣給js端傳遞數據
alert(document.getElementById(‘ha’).innerHTML); 如果裡面是b點擊/b,得到的也是b點擊/b.或alert(document.getElementById(‘ha’).innerText); // 這個僅IE下有效,但如果裡面是b點擊/b,得到的只是”點擊”
android中webview與js交互
移動開發中,我們經常會遇到混合開發模式,經常是在移動客戶端中增加網頁,來減少客戶端的壓力,同時也讓軟件更加靈活。廢話少說,下面直接進入主題。
webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
webView.getSettings().setAppCacheEnabled(true);
if (Constant.DEBUG) {
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//參數1 定義Android 與js交互的接口, 參數2 與js交互的一個常量,可以是任意一個常量字符串,
但是h5網頁調用的時候需要增加這個參數二:handler
public class JSInterface{
@JavascriptInterface//這個標註必須加上 表示js要調用的方法,可以自動識別
public void getShareInfo(String strings) {
//todo android dosomething
}
}
那麼 js端該如何調用這個方法呢\
android 和ios的調用方法不一樣 因此 h5裡面需要區別andorid和ios機型來分別調用移動端方法
如android:
//handler 是與android 約定的常量(最好做成全局通用的常量)
//getShareInfo 是與android 定義的調用方法
以上常量、方法、參數類型 必須一致才能成功調用
WebView提供兩個事件回調類給應用層,分別為WebViewClient,WebChromeClient開發者可以繼承
這兩個類,接手相應事件處理。WebViewClient 主要提供網頁加載各個階段的通知,比如網頁開始
加載onPageStarted,網頁結束加載onPageFinished等;WebChromeClient主要提供網頁加載過程
中提供的數據內容,比如返回網頁的title,favicon等。
有需要監聽加載網頁進度
//需要webBar的可以自定義增加一個webBar
最後,就是大家都知道的webView.loadUrl(url);//url需要加載的網頁
那麼,如何在android調用js的方法呢
//getMsg() 為js裡面暴露的方法
在銷毀的時候:
protected void onDestroy() {\
super.onDestroy();\
if (webView != null) {\
webView.loadUrl(“about:blank”);\
webView.destory();\
}\
}
在Android上怎樣實現JAVA和JS交互
android調用js方法比較簡單,一行代碼搞定。
mWebView.loadUrl(“javascript:test(‘” + aa+ “‘)”);//test就是你js方法,然後是參數
然後是js調用android方法,比較複雜。
a onclick=”window.wst.test2(2)”b.c/a
這個window.wst的wst就是Android中自己定義的標識名稱,clickOnAndroid方法就是安卓中自定義的方法名。
mWebView.addJavascriptInterface(new MyTest(), “wst”);//給android添加一個js接口,標識名稱wst
//這裡的代碼是個類部類
private final class MyTest{
@JavascriptInterface
public void clickOnAndroid(int number) {
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i(“number”,number);//這裡所有代碼必須寫到主線程中,否則報錯。
}
});
}
}
這樣就能實現js調用android。
兩個方法最重要的都是要啟用webview的js功能。
// 啟用javascript
mWebView.getSettings().setJavaScriptEnabled(true);
哪裡不懂可以繼續追問我
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/309881.html