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

androidjswebview交互

發布時間: 2025-03-05 10:51:47

❶ 在Android上怎樣實現java和JS交互

完全講完的話比較多,我就不講太細,有兩種實現方式

1、使用原生的webview 和js交互

2、第二種方式是用第三方框架,這個框架一定要選好,要js android ios都能用 不然最後會發現這個能交互那個不能,代碼需要些兩套

我上個項目用的:'com.gzsll.jsbridge:library:1.0.0'

具體用法可以網路到

❷ androidwebview載入本地js怎麼實現交互

WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />

第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>

❸ android與javascript的交互可以不通過webview嗎

在android的應用程序中,可以直接調用webview中的javascript代碼,而webview中的javascript代碼,也可以去調用ANDROID應用程序(也就是JAVA部分的代碼).下面舉例說明之:

1JAVASCRIPT腳本調用android程序

要在webview中,調用addJavascriptInterface(OBJ,interfacename)
其中,obj為和javascript通信的應用程序,interfacename為提供給JAVASCRIPT調用的
名稱,設置如下:

?
1
2
3
4
5
WebViewwebView=newWebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());
//設定JavaScript腳本代碼的界面名稱是」android」
webView.addJavascriptInterface(this,"android");
其中WEBVIEW調用的HTML頁中,JS如下:

?
1
2
3
4
<scripttype="text/javascript">
functionok(){
android.js(document.forms[0].elements[0].value,document.forms[0].elements[1].value);
}
而這個android.js在哪呢?那是在應用程序中的

?
1
2
3
4
//JavaScript腳本代碼可以調用的函數js()處理
publicvoidjs(Stringaction,Stringuri){
...../
}
這個JS中就是處理JAVASCRIPT發送過來的請求了.

2)下面的例子,當WEBVIEW網頁中輸入後,點提交按鈕,會跟ANDROID的應用程序進行交互

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WebViewwebView=newWebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(newMyWebChromeClient());
webView.loadUrl(getIntent().getCharSequenceExtra("url").toString());

//onJsAlert()函數接收到來自HTML網頁的alert()警告信息
publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,JsResultresult){
if(message.length()!=0){
AlertDialog.Builderbuilder=newAlertDialog.Builder(JExample02.this);
builder.setTitle("FromJavaScript").setMessage(message).show();
result.cancel();
returntrue;
}
returnfalse;
}
而HTML頁中的JS事件為:

?
1
<inputtype="button"value="alert"onclick="alert(document.forms[0].elements[0].value)">
特別提示下,在自定義的MyWebChromeClient())中,除了可以重寫onJSAlert外,還可以
重寫onJsPrompt,onJsConfirm等,可以參考
http://618119.com/archives/2010/12/20/199.html

3)下面這個例子,先顯示第一張圖片,點一點後,再顯示第2張圖片
HTMLJS中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<scriptlanguage="javascript">
functionchangeImage02(){
document.getElementById("image").src="navy02.jpg";
}
functionchangeImage01(){
document.getElementById("image").src="navy01.jpg";
}
</script>
</head>
<body>
<aonClick="window.demo.onClick()">
<imgid="image"src="navy01.jpg"/></a>
</body>
當點<aonClick="window.demo.onClick()">
後,調用ANDROID應用程序中的處理部分,看程序:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
webView.addJavascriptInterface(newJSInterface(),"demo");

publicfinalclassJSInterface{
//JavaScript腳本代碼可以調用的函數onClick()處理

publicvoidonClick(){
handler.post(newRunnable(){
publicvoidrun(){
if(flag==0){
flag=1;
webView.loadUrl("javascript:changeImage02()");
}else{
flag=0;
webView.loadUrl("javascript:changeImage01()");
}
}
});
}
}
可以看到,ANDROID中,通過webView.loadUrl去調用HTML頁面中的JS

❹ 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上怎樣實現JAVA和JS交互

java和js交互分為三種情況,分別是:

1 調用網頁上的js代碼

Android中可以通過webview來實現和js的交互,在程序中調用js代碼,只需要將webview控制項的支持js的屬性設置為true,,然後通過loadUrl就可以直接進行調用,如下所示:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");

2 網頁java代碼的方法

在網頁中調用java代碼,需要在webview控制項中添加javascriptInterface。如下所示:

mWebView.addJavascriptInterface(newObject(){
publicvoidclickOnAndroid(){
mHandler.post(newRunnable(){
publicvoidrun(){
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函數,如functiontest(str),然後只需在調用js時傳入參數即可,如下所示:

mWebView.loadUrl("javascript:test('aa')");

4.Js中調用java函數並傳參

首先一樣需要帶參數的函數形式,但需注意此處的參數需要final類型,即得到以後不可修改,如果需要修改其中的值,可以先設置中間變數,然後進行修改。如下所示:

mWebView.addJavascriptInterface(newObject(){
publicvoidclickOnAndroid(finalinti){
mHandler.post(newRunnable(){
publicvoidrun(){
intj=i;
j++;
Toast.makeText(Test.this,"測試調用java"+String.valueOf(j),Toast.LENGTH_LONG).show();
}
});
}
},"demo");

然後在html頁面中,利用如下代碼<divid='b'><aonclick="window.demo.clickOnAndroid(2)">b.c</a></div>,

下面是安卓無憂中js 與安卓相互調用的效果圖,可以網路一下安卓無憂,點擊源碼,看看裡面的源碼。

❻ 安卓原生和js交互的4種方式 java和js交互 安卓JsBridge原理解析

JsBridge是實現Android與JavaScript交互的流行方式,共有四種方法可以實現數據傳遞。第一種方法是通過`addJavascriptInterface`實現JS調用Android。此方法使用`public void addJavascriptInterface(Object object, String name) {}`,其中`object`為Android對象,`name`為其別名。例如,`webview.addJavascriptInterface(JavaH5Activity.this, "androidObject");`將JavaH5Activity實例命名為androidObject傳遞給JS。在JS中調用時,使用`window.androidObject.androidMethod();`獲取Android傳遞的數據。示例代碼展示了JS和Android運行效果與日誌輸出。

第二種方法是`shouldOverrideUrlLoading`,允許JS通過重定向觸發Android攔截,解析URL中的數據,並指揮Android執行相應操作。簡單的重定向代碼和URL編碼示例展示了如何將數據傳遞給Android。列印結果驗證了數據解析和執行情況。

第三種方法是通過`loadUrl`實現Android調用JS。示例代碼展示了如何將數據`jsonParams`傳遞給JS並顯示在H5頁面上。通過修改JS代碼中的注釋,演示了請求重定向的問題,隨後介紹了一種方法來彌補這一缺陷。

第四種方法是`evaluateJavascript`,允許Android調用JS代碼,實現數據雙向傳遞。示例代碼與運行結果展示了其功能,通過日誌輸出驗證了數據的交互過程。

JSBridge原理簡述為:它是一座由JavaScript構建的橋梁,替代WebView自帶的介面,提供靈活、安全的Android與JS交互機制。它允許根據預約定的規則通知Native執行特定操作,實現兩者的交互。

若有編程疑問,歡迎私信我,我會盡快解答。我是編程小石頭,一名全棧開發者,分享編程經驗與心得,希望幫助後來者少走彎路。關注我,獲取更多干貨分享。

熱點內容
串口伺服器忘了ip怎麼設置 發布:2025-03-06 02:38:31 瀏覽:626
聯想伺服器控制口登錄地址 發布:2025-03-06 02:20:58 瀏覽:68
為什麼安卓淘汰這么快 發布:2025-03-06 02:16:04 瀏覽:47
編譯筆記 發布:2025-03-06 02:11:17 瀏覽:917
linux源碼學習 發布:2025-03-06 02:06:05 瀏覽:559
極坐標圖編程 發布:2025-03-06 01:52:23 瀏覽:308
centos訪問網頁 發布:2025-03-06 01:51:18 瀏覽:974
海康威視華為雲伺服器 發布:2025-03-06 01:36:20 瀏覽:702
安卓手機怎麼把三張圖片拼在一起 發布:2025-03-06 01:31:50 瀏覽:321
文件夾刪除不了許可權 發布:2025-03-06 01:28:06 瀏覽:303