當前位置:首頁 » 安卓系統 » androidjs交互

androidjs交互

發布時間: 2022-05-06 17:02:34

① android與js交互的框架有哪些

第一步:
mainfest.xml中加入網路許可權

[java] view plain
<uses-permission android:name="android.permission.INTERNET" />
第二步:

載入本地寫好的html文件(定義好js中提供給android調用的方法 funFromjs(),和android提供給js調用的對象介面fun1FromAndroid(String name)),放在 assets目錄下。

[html] view plain
<body>
<a>js中調用本地方法</a>
<script>

function funFromjs(){
document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
}
var aTag = document.getElementsByTagName('a')[0];
aTag.addEventListener('click', function(){
//調用android本地方法
myObj.fun1FromAndroid("調用android本地方法fun1FromAndroid(String name)!!");
return false;
}, false);
</script>
<p></p>
<div id="helloweb">

</div>
</body>

第三步:

實現android工程與js交互的相關代碼
android主題代碼:

[java] view plain
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initViews();

//設置編碼
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//設置背景顏色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//設置本地調用對象及其介面
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
//載入js
mWebView.loadUrl("file:///android_asset/test.html");

//點擊調用js中方法
mBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:funFromjs()");
Toast.makeText(mContext, "調用javascript:funFromjs()", Toast.LENGTH_LONG).show();
}
});

}
js調用的android對象方法定義

[java] view plain
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上註解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}

public void fun1FromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}

public void fun2(String name) {
Toast.makeText(mContxt, "調用fun2:" + name, Toast.LENGTH_SHORT).show();
}
}

② Android-webview和js腳本語言交互的時候怎麼獲取js方法的返回值

方法:

1、通過webview訪問js腳本

2、js腳本再調用webview中的java函數把結果返回

示例代碼:

通過本地的webview打開腳本頁面。

調用步驟

1、設置webview支持腳本

webSettings.setJavaScriptEnabled(true);

2、打開腳本頁面

mWebView.loadUrl("file:///android_asset/demo.html");//這里打開該app的asset目錄下的demo.html,裡面含有wave函數腳本

3、調用腳本

mWebView.loadUrl("javascript:wave()");//調用打開頁面中的wave函數

4、webview中建立js能夠訪問

mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");//js可以通過demo訪問到DemoJavaScriptInterface類中的方法。
{
DemoJavaScriptInterface(){
}
publicvoidclickOnAndroid(Stringresult){
System.out.prinltn("返回的結果"+result);
}
}

5、js訪問webview方法

<scriptlanguage="javascript">
functionwave(){
alert("1");
window.demo.clickOnAndroid('結果1');//返回結果,調用java方法
}
</script>

③ android與js交互實現什麼功能

第一步:
mainfest.xml中加入網路許可權

[java] view plain
<uses-permission android:name="android.permission.INTERNET" />
第二步:

載入本地寫好的html文件(定義好js中提供給android調用的方法 funFromjs(),和android提供給js調用的對象介面fun1FromAndroid(String name)),放在 assets目錄下。

[html] view plain
<body>
<a>js中調用本地方法</a>
<script>

function funFromjs(){
document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";
}
var aTag = document.getElementsByTagName('a')[0];
aTag.addEventListener('click', function(){
//調用android本地方法
myObj.fun1FromAndroid("調用android本地方法fun1FromAndroid(String name)!!");
return false;
}, false);
</script>
<p></p>
<div id="helloweb">

</div>
</body>

第三步:

實現android工程與js交互的相關代碼
android主題代碼:

[java] view plain
@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化
initViews();

//設置編碼
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
//支持js
mWebView.getSettings().setJavaScriptEnabled(true);
//設置背景顏色 透明
mWebView.setBackgroundColor(Color.argb(0, 0, 0, 0));
//設置本地調用對象及其介面
mWebView.addJavascriptInterface(new JavaScriptObject(mContext), "myObj");
//載入js
mWebView.loadUrl("file:///android_asset/test.html");

//點擊調用js中方法
mBtn1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
mWebView.loadUrl("javascript:funFromjs()");
Toast.makeText(mContext, "調用javascript:funFromjs()", Toast.LENGTH_LONG).show();
}
});

}
js調用的android對象方法定義

[java] view plain
public class JavaScriptObject {
Context mContxt;
@JavascriptInterface //sdk17版本以上加上註解
public JavaScriptObject(Context mContxt) {
this.mContxt = mContxt;
}

public void fun1FromAndroid(String name) {
Toast.makeText(mContxt, name, Toast.LENGTH_LONG).show();
}

public void fun2(String name) {
Toast.makeText(mContxt, "調用fun2:" + name, Toast.LENGTH_SHORT).show();
}
}

④ 原生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")&lt;0){
try{
if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
return '0';
}else{
return '1';
}
}catch(e){}
}
}else if( u.indexOf('iPad') &gt; -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'];

⑤ js怎麼跟Android和ios進行交互

<script>
function view(id){
//alert(id);
myjs.passIdToApp(id);
// passIdApp(id);
}
< /script>

*******************************************************我是分割線****************************************************************

NSString *htmlPath=[[NSBundle mainBundle] resourcePath];
htmlPath=[htmlPath :@"Test.html"];
NSURL *localURL=[[NSURL alloc]initFileURLWithPath:htmlPath];
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:localURL];

[self.mywebview loadRequest:request];
JSContext *context = [self.mywebview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"myjs.passIdToApp"] = ^() {
NSLog(@"Begin Log");
NSArray *args = [JSContext currentArguments];
for (JSValue *jsVal in args) {
NSLog(@"%@", jsVal);
NSString *proctID= [NSString stringWithFormat:@"%@",jsVal];
[self.navigationController pushViewController:[[Details_VC alloc]initWithProctID:proctID] animated:YES];
}
// JSValue *this = [JSContext currentThis];
NSLog(@"-------End Log-------");
};

*******************************************************我還是分割線****************************************************************

如果只調用passIdApp(id); 但是如果改成了myjs.passIdApp(id);就無法獲取數據了

⑥ reactnative中android與js只進行數據交互該怎麼做

作者:hi大頭鬼hi
鏈接:https://zhuanlan.hu.com/p/20464825
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

先來看一個簡單的demo,如何在RN中調用Android原生的的Toast模塊。
index.android.jsvar React = require('react-native');
var {
ToastAndroid,
} = React;
...
ToastAndroid.show('This is a toast with short ration', ToastAndroid.SHORT)

index.android.js是ReactNative的入口文件,後綴Android表示是在Android平台使用的代碼。ReactNative內置了babel,所以可以使用最新的JavaScript語法來開發(ECMAScript6簡稱es6),不熟悉es6的同學可以看看阮一峰寫的這本[e6入門教程](ECMAScript 6入門)。這里我簡單介紹一下require,Android程序員可以把require對應到Java的import,使用來導入一個JavaScript模塊的。`var {ToastAndroid} = React`這種寫法叫結構賦值,就是從React這個對象中,提取出ToastAndroid這個屬性所對應的值,並賦值給ToastAndroid這個變數。可以看出toast模塊就是從react-native這個模塊中的ToastAndroid屬性,js中的Toast模塊API和Android中的JavaAPI基本是保持一致的。

⑦ android js交互為什麼進兩次方法

方法一:js註解
先上js腳本(代碼來自網路):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<script type="text/javascript">
//java代碼調用js方法
function javacalljs(){
document.getElementById("content").innerHTML +=
"<br\>java調用了js函數";
}
</script>
</head>
<body>

⑧ 安卓和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></div> 3. 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>, 即可實現調用 你的採納是我前進的動力,還有不懂的地方,請你繼續「追問」! 如你還有別的問題,可另外向我求助;答題不易,互相理解,互相幫助!

熱點內容
java服務端緩存 發布:2025-05-14 15:53:37 瀏覽:105
php判斷postget 發布:2025-05-14 15:34:24 瀏覽:357
linux查看電腦配置 發布:2025-05-14 15:32:07 瀏覽:317
軍用壓縮水 發布:2025-05-14 15:27:19 瀏覽:26
win7c盤加密 發布:2025-05-14 15:04:49 瀏覽:511
dm碼編程 發布:2025-05-14 15:03:56 瀏覽:405
apache加密 發布:2025-05-14 14:49:13 瀏覽:970
安卓什麼軟體蘋果不能用 發布:2025-05-14 14:49:03 瀏覽:772
jsoupjava 發布:2025-05-14 14:38:00 瀏覽:889
影豹選哪個配置最好 發布:2025-05-14 14:28:50 瀏覽:256