當前位置:首頁 » 安卓系統 » android調用js傳遞參數

android調用js傳遞參數

發布時間: 2023-07-13 21:51:24

1. 原生APP中js怎樣與Android和ios進行交互

一、對於Android和ios我們要執行不同的操作,下面是判斷系統的js代碼
// alert(ismobile(1)); 1表示Android,0表示ios
function ismobile(test){
var u = navigator.userAgent, app = navigator.appVersion;
if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
if(window.location.href.indexOf("?mobile")<0){
try{
if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
return '0';
}else{
return '1';
}
}catch(e){}
}
}else if( u.indexOf('iPad') > -1){
return '0';
}else{
return '1';
}
}
二、js調用app端函數,下面是js代碼
if(ismobile(1)==1){
Android.setTypeActivity(id,type,href);
}else{
jsToios(id,type,href);
}
setTypeActivity是Android端定義的函數,jsToios是ios端定義的函數,括弧里是js端傳遞的參數。
三、至於js端怎樣獲取app端的數據,只需在js端提供給app端函數名字,在通知app端調用即可
四、還有一種方法可以不通過app的方法將數據傳遞給另一個頁面,那就是通過URL的方式
在本頁面將數據拼接在ip後面
在另外一個頁面通過下面方法獲取URL後的參數
function GetRequest() {
var url = location.search; //獲取url中"?"符後的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=decodeURIComponent(strs[i].split("=")[1]);
}
}
return theRequest;
}
// 獲取URL參數
var Request = new Object();
Request = GetRequest();
var name;
name = Request['name'];

2. 在android中怎樣調用本地js文件里的方法並得到返回值

在android中調用本地js文件里的方法並得到返回值其方法如下:

Android中內置了WebKit模塊,而該模塊的java層視圖類就是WebView,所有需要使用Web瀏覽器功能的Android都需要創建該視圖類對象顯示和處理請求的網路資源。目前WebKit支持Http、Https、Ftp和JavaScript請求。下面是在Android中調用JavaScript方法以及如何在js中調用本地方法。

1、在Assets下放一個簡單的html文件jstest.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd">
<HTML>
<HEAD>
<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" />
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
function showMsg(){
alert("hello world!");
}
function showMsgInAndroid(){
myjs.showMsg('hello in android!');
}
</script>
</HEAD>
<BODY>
<span>測試js使用</span>

<button id='btntest' onclick='showMsgInAndroid()'>調用android方法</button>
</BODY>
</HTML>

3. 在Android上怎樣實現JAVA和JS交互

在Android的開發過程中、遇到一個新需求、那就是讓Java代碼和Javascript代碼進行交互、在IOS中實現起來很麻煩、而在Android中相對來說容易、Android對這種交互進行很好的封裝、其實可以很簡單的用Java代碼調用WebView中的js函數、也可以用WebView中的js來調用Android應用中的Java代碼

一、網頁的JS代碼調用ANDROID中JAVA代碼的方法

在網頁中調用java代碼、需要在webview控制項中添加javascriptInterface

contentWebView = (WebView) findViewById(R.id.webview);

//啟用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js對象名");

在Activity中定義一個要被js調用的方法、src為js傳遞過來的參數、如果沒有不傳也可以的。

public void jsFunction(final String str) {

Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里對Android應用的UI進行處理
}
});
}

在網頁中、只需要像調用js方法一樣、進行調用就可以

<a onClick="window.js對象名.jsFunction(´hello world´)" >

點擊調用java代碼並傳遞參數
</a>

二、ANDROID中JAVA代碼調用網頁的JS代碼的方法

Java代碼調用js並傳參其實是通過WebView的loadUrl方法去調用的、只是參數url的寫法不一樣

// 無參數調用

contentWebView.loadUrl("javascript:javacalljs()");
// 傳遞參數調用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");

三、JAVA和JS交互注意事項

1、Java 調用 js 裡面的函數、效率並不是很高、估計要200ms左右吧、做交互性很強的事情、這種速度很難讓人接受、而js去調Java的方法、速度很快、50ms左右、所以盡量用js調用Java方法

2、Java 調用 js 的函數、沒有返回值、調用就控制不到

3、Js 調用 Java 的方法、返回值如果是字元串、你會發現這個字元串是 native 的、轉成 locale 的才能正常使用、使用 toLocaleString() 函數就可以、不過這個函數的速度並不快、轉化的字元串如果很多、將會很耗費時間

4、網頁中盡量不要使用jQuery、執行起來需要5-6秒、最好使用原生的js寫業務腳本、以提升載入速度、改善用戶體驗

4. android callhandler 怎麼給js傳數據

看你數據量有多大。只是種類多的話把要傳的數據封裝成一個類,添加到Message的obj裡面就行;如果數據量佔用空間大的話直接傳遞可能會影響處理速度,這時可以考慮傳遞文件

5. Android webView 注入js文件,及交互

0.js文件:

鏈接:https://pan..com/s/1MaWKxgkYgQTVQCgn8-dxLg

提取碼:o6wy

3.添加js要調用的Android方法

4.添加(JsBridge:js中調用Android方法的對象名)

5.注入js

6.Android調用js方法傳值給js

步驟3中發送了處理後的消息,在webactivity中接受消息並處理:

數據示例:(參數需要使用單引號包著)

else中對應的

callbackResult('sr1557665118336','{"data":"test"}')

if中對應的

javascript:callbackResult('sr1557665118336','{"data":"test"}')

7.補充:eventbus消息實體封裝類

8.總結:

6. 在Android上怎樣實現JAVA和JS交互

JS調用JAVA:通過addJavascriptInterface注冊函數供JS調用,例如:

在Android代碼中:
mWebView.addJavascriptInterface(new Object() {

@JavascriptInterface
public boolean isOnline() {
return 1;
}
@JavascriptInterface
public boolean test(String msg) {
return "hello "+ msg;
}

}, "AndroidMain");

在js代碼中調用:
var online=window.AndroidMain.isOnline();
var test=window.AndroidMain.test("ttt");

JAVA調用JS:使用loadURL調用JS的函數:

mWebView.loadURL("Javascript:alert('提示。。')")

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:626
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:356
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:71
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:296
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:787
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:337
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:202
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:798
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:355
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:582