androidjswebview交互
❶ 在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執行特定操作,實現兩者的交互。
若有編程疑問,歡迎私信我,我會盡快解答。我是編程小石頭,一名全棧開發者,分享編程經驗與心得,希望幫助後來者少走彎路。關注我,獲取更多干貨分享。