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

androidhtml交互

發布時間: 2022-04-24 20:48:54

1. android 怎麼改變html中文字的大小

通過android代碼與html代碼交互實現。下面是交互的小例子,這個例子來源於android學習手冊,360手機助手中下載,包含108個例子,文檔還有源碼

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() {

publicvoid clickOnAndroid() {

mHandler.post(newRunnable() {

publicvoid 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函數,如functiontest(str),然後只需在調用js時傳入參數即可,如下所示:

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

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

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

mWebView.addJavascriptInterface(newObject() {

publicvoid clickOnAndroid(final int i) {

mHandler.post(newRunnable() {

publicvoid run() {

intj = i;

j++;

Toast.makeText(Test.this,"測試調用java" + String.valueOf(j), Toast.LENGTH_LONG).show();

}

});

}

},"demo");

2. webview 與html5有幾種交互方式

對於android初學者應該都了解webView這個組件。之前我也是對其進行了一些簡單的了解,但是在一個項目中不得不用webview的時候,發現了webview的強大之處,今天就分享一下使用webview的一些經驗。

1、首先了解一下webview。
webview介紹的原文如下:A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Activity. It uses the WebKit rendering engine to display web pages and includes methods to navigate forward and backward through a history, zoom in and out, perform text searches and more.
從上面你應該了解到了基本功能,也就是顯示網頁。之所以我說webview功能強大是因為它和js的交互非常方便,很簡單就可以實現。

2、webview能做什麼?
①webView可以利用html做界面布局,雖然目前還比較少人這么使用,不過我相信當一些客戶端需要復雜的圖文(圖文都是動態生成)混排的時候它肯定是個不錯的選擇。
②直接顯示網頁,這功能當然也是它最基本的功能。
③和js交互。(如果你的js基礎比java基礎好的話那麼採用這種方式做一些復雜的處理是個不錯的選擇)。

3、如何使用webview?
這里直接用一個svn上取下的demo,先上demo後講解。demo的結構圖如下:

WebViewDemo.java

package com.google.android.webviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

/**
* Demonstrates how to embed a WebView in your activity. Also demonstrates how
* to have javascript in the WebView call into the activity, and how the activity
* can invoke javascript.
* <p>
* In this example, clicking on the android in the WebView will result in a call into
* the activities code in {@link DemoJavaScriptInterface#clickOnAndroid()}. This code
* will turn around and invoke javascript using the {@link WebView#loadUrl(String)}
* method.
* <p>
* Obviously all of this could have been accomplished without calling into the activity
* and then back into javascript, but this code is intended to show how to set up the
* code paths for this sort of communication.
*
*/
public class WebViewDemo extends Activity {

private static final String LOG_TAG = "WebViewDemo";

private WebView mWebView;

private Handler mHandler = new Handler();

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);

WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

mWebView.loadUrl("file:///android_asset/demo.html");
}

final class DemoJavaScriptInterface {

DemoJavaScriptInterface() {
}

/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});

}
}

/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(LOG_TAG, message);
result.confirm();
return true;
}
}
}

demo.html

<html>
<script language="javascript">
/* This function is invoked by the activity */
function wave() {
alert("1");
document.getElementById("droid").src="android_waving.png";
alert("2");
}
</script>
<body>
<!-- Calls into the javascript interface for the activity -->
<a onClick="window.demo.clickOnAndroid()"><div style="width:80px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;" >
<img id="droid" src="android_normal.png"/><br>
Click me!
</div></a>
</body>
</html>

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/intro"
android:padding="4dip"
android:textSize="16sp"
/>

<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
/>

</LinearLayout>

4、如何交互?
①android如何調用js。
調用 形式:
mWebView.loadUrl("javascript:wave()");

其中wave()是js中的一個方法,當然你可以把這個方法改成其他的方法,也就是android調用其他的方法。
②js如何調用android。
調用形式:
<a onClick="window.demo.clickOnAndroid()">

代碼中的「demo」是在android中指定的調用名稱,即
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");

代碼中的clickOnAndroid()是「demo」對應的對象:new DemoJavaScriptInterface() 中的一個方法。
③雙向交互。
當然是把前面的兩種方式組合一下就可以了。

5、講解demo。
現在你一定了解了android和js的交互了。是時候分析一些demo了,根據上面講的你也應該比較清楚了。具體交互流程如下:
①點擊圖片,則在js端直接調用android上的方法clickOnAndroid();
②clickOnAndroid()方法(利用線程)調用js的方法。
③被②調用的js直接控制html。

個人總結:利用webView的這種方式在有些時候UI布局就可以轉成相應的html代碼編寫了,而html布局樣式之類有DW這樣強大的工具,而且網上很多源碼,很多代碼片。在UI和視覺效果上就會節省很多時間,重復發明輪子沒有任何意義。

3. android app和app資源文件的html交互嗎

Android的開發中除了本地app的處理外,有時需要與html5的交互

4. android 我在html5開發操作後怎麼接受它返回的數據

依據Gartner的研究,Android是全球最受歡迎的移動操作系統,是它支持著大多數智能手機;而依據Canalys的調研,現在在平板電腦領域享有多數市場份額(53%)。讓Android有如此熱度的一部分因素是其多樣性。幾乎每個用戶都有一個的Android設備的尺寸和形狀,想要一個13英寸帶可拆卸鍵盤的平板電腦?Android同樣滿足你。
當如此多樣的設備讓用戶歡喜時,它也為開發人員帶來了不少頭疼的麻煩。屏幕尺寸、解析度、CPU架構和操作系統版本等,都會為開發人員創建原生Android app帶來挑戰。幸運的是,HTML5使得處理這龐大而多樣的Android設備隊伍變得快速而簡單。
「服務員,我的凍酸奶裡面有果凍豆」
Android初次廣泛登台是在2009年。製造商發布設備,一般只對操作系統更新一兩次,就放棄它開始關注新硬體了。因此,根據OpenSignal對超過五十萬台Android設備中,名為Gingerbread(姜餅2.3 x)的版本依然占據著最大市場份額(34.1%)。

Android SDK是操作系統特定的,這為Android開發人員營造了挑戰。也就是說,如果你用4.0 SDK(冰淇淋三明治)開發app,你的app將不能在2.3(姜餅)上運行。這無疑讓開發人員置身於一個尷尬境地。一方面,你要用最新最好的SDK,另一方面,你要app得到盡可能多的下載。
有了HTML5,你不用再糾結於選擇。你可以用強大的它來構建你的app,無視Android操作系統版本。
龐大的Android設備隊伍
在Android設備運行的不同不僅僅是表面上的,任何Android設備的心臟部分都是CPU由Qualcomm、PowerVR、NVidia、MediaTek、Intel等製造。取決於你的app需要用到哪個操作系統的特性,原生Android SDK可能不會兼容什麼特別設備。
HTML5提供APIs來做很多通常被認為是原生操作系統功能的事情。HTML5包含對於鍵/值存儲、文件系統IO甚至通過地理定位訪問GPS的強大APIs。
要訪問原生操作系統功能,沒有標準的HTL5界面。 Apache Cordova framework提供一個界面讓你的app在任何設備上訪問原生操作系統資源,諸如攝像機和加速計。
各種形狀和大小
Android設備有著各種尺寸,小至三星的新齒輪智能手錶,大至13英寸或更大的平板電腦。更添其復雜性的是解析度范圍從240×320跨到2560×1600。
要解決這個問題,你可能得用線形布局或網格視圖。這類布局能良好運行,如果你想要依據用戶需求滾動到視圖中查看app。
好在HTML5提供一個更好的途徑來處理尺寸大小的問題——用響應設計。響應設計是由CSS Media Queries所增強的簡單結構的HTML在更大的屏幕利用更多的空間,在更小的屏幕上縮小或消除那些並不重要的元素。
當響應設計正確完成時,用戶就對跨平台的app有了流暢的體驗,即便是重新調整屏幕,這是在任何操作系統上解決屏幕尺寸/解析度問題的最好辦法。
移植到其它平台
Java的願景是「write once, run any where(只寫一次,哪兒都能跑)」。不幸,出於種種原因,不能實現這個夢。一些交互編譯器可以允許創建針對Android和iOS的app,但只有HTML5能在移動操作系統和互聯網瀏覽器上運行。
在諸如Android、iOS、Windows Phone等移動操作系統上,HTML5應用通常託管於Apache Cordova (aka PhoneGap)內,Apache Cordova充當將你的HTML5聯繫到原生操作系統的角色,這包括定義你的app圖標、載入屏幕和提供JavaScript來訪問原生操作系統硬體。
HTML5支持跨平台,當然,還支持網頁。你第一次用HTML5取代.ASPX或PHP來開啟一個新項目將需要十足的信仰之外,還要你的app在沒有伺服器端生成HTML的情況下工作。
開啟你的瀏覽器
HTML5應用的性能可以無限接近於原生性能,如果它們是被精心無誤地製作處理的。
HTML5應用絕對需要被安裝到設備上。通過將Apache Cordova或嵌入的WebView指向一個託管於互聯網的網頁來構建的app只能提供可憐的用戶體驗。如果你的app每次都需要用戶通過點擊一些東西來下載用戶界面,這是不可能滿足他們「即時響應」的期望的。為獲得接近於原生的速度,你所有的HTML5、JavaScript和CSS都必須安裝在本地設備上,從而使它能夠在用戶點擊後就運行。
大多數移動app從互聯網伺服器上載入和保存數據。為了保持你的app以最快的速度響應,你將要在本地存儲一個緩存數據並非同步刷新你的數據。這將允許你的app在非同步更新時,立即渲染其UI。
HTML的復雜性使得關於渲染你的用戶界面需要多少CPU cycles有了很大不同,最好是保持你的HTML盡可能地結構簡單化,帶有盡可能少的嵌套級別標簽。舉個例子說,深度嵌套的HTML表格,是出了名地衰!
結論
HTML5允許你寫一次應用程序並快速部署它到幾乎現有的每個操作系統。它即時響應的能力很適合現在數不勝數的安卓設備屏幕尺寸。憑借大量可用的工具,諸如 Intel XDK new IDE,你可以在Android使用HTML開放式架構、CSS和JavaScript上提供一種美妙的體驗。

5. 如何實現網頁代碼(JS/HTML)和IOS應用程序交互

//①ji與android交互
//js調用android方法
window.類.方法名稱(參數1,參數2);
//android調用js方法(loginIn:方法名稱,uname:參數)
//activity.loadUrl("javascript:loginIn('"+uname+"');");

//②js與ios交互
//js調用ios方法(objc:協議)
window.location.href='objc://方法名稱|參數1|參數2';
//ios調用js方法:
同android

其中:android的activity如下:

@Override
publicvoidonCreate(BundlesavedInstanceState){
//setFullScreen(true);
Intentintent=newIntent(getApplicationContext(),
SplashActivity.class);
startActivity(intent);
super.onCreate(savedInstanceState);
super.init();
//Setby<contentsrc="index.html"/>inconfig.xml
activity=this;
//this.appView.setBackgroundResource(R.drawable.welcome);//設置背景圖片
//
//super.setIntegerProperty("splashscreen",R.drawable.welcome);

//設置閃屏背景圖片
//super.setBooleanProperty(name,value)
//super.loadUrl("這里是html頁面的路徑");
super.appView.addJavascriptInterface(newFu(),"這里是類名(js中需要通過這個類名訪問android方法)");
super.loadUrl(Config.getStartUrl());

//super.loadUrl("file:///android_asset/www/index.html")
//mController.openShare(activity,false);
//try{
//getToken();
//}catch(NoSuchAlgorithmExceptione){
////TODOAuto-generatedcatchblock
////e.printStackTrace();
//}

}

6. android嵌入h5,怎麼交互

Android和H5之間的交互
hybrid App開發也不是什麼新鮮事了,其中native和h5之間的交互則是必不可少的。Android中是如何和H5交互的?
1、webView載入頁面
我們都知道在Android中是通過webView來載入html頁面的,根據HTML文件所在的位置不同寫法也不同:
//例如:載入assets文件夾下的test.html頁面
mWebView.loadUrl("file:///android_asset/test.html")
//例如:載入網頁
mWebView.loadUrl("http://www..com")

如果只是這樣調用mWebView.loadUrl()載入的話,那麼當你點擊頁面中的鏈接時,頁面將會在你手機默認的瀏覽器上打開。那如果想要頁面在App內中打開的話,那麼就得設置setWebViewClient:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
mWebView.loadUrl(url);
return true;
}
}
});

2、Android本地通過Java調用HTML頁面中的JavaScript方法
想要調用js方法那麼就必須讓webView支持
WebSettings webSettings = mWebView.getSettings();
//設置為可調用js方法
webSettings.setJavaScriptEnabled(true);

若調用的js方法沒有返回值,則直接可以調用mWebView.loadUrl("JavaScript:do()");其中do是js中的方法;若有返回值時我們可以調用mWebView.evaluateJavascript()方法:
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});

js代碼如下:
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function do(){
document.getElementById("p").innerHTML="hello world";
}
</script>

2、js調用Android本地Java方法
在Android4.2以上可以直接使用@JavascriptInterface註解來聲明,下面是在一個本地Java方法
public class JsInteration {
@JavascriptInterface
public String back() {
return "hello world";
}
}

定義完這個方法後再調用mWebView.addJavascriptInterface()方法:
mWebView.addJavascriptInterface(new JsInteration(), "android");

那麼在js中怎麼來調用呢?
<script type="text/javascript">
function s(){
//調用Java的back()方法
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}

</script>

4、攔截HTML頁面中的點擊事件
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//判斷url攔截事件
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});

以上就是Java調用js方法以及js調用Java方法的實現交互方式中的一種。下面給出完整代碼:
mainActivity
public class MainActivity extends AppCompatActivity {
public static final String TAG = "MainActivity";
private WebView mWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webView);
mWebView.loadUrl("file:///android_asset/test.html");
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new JsInteration(), "android");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.equals("file:///android_asset/test2.html")) {
Log.e(TAG, "shouldOverrideUrlLoading: " + url);
startActivity(new Intent(MainActivity.this,Main2Activity.class));
return true;
} else {
mWebView.loadUrl(url);
return false;
}
}
});
}
//Android調用有返回值js方法
@TargetApi(Build.VERSION_CODES.KITKAT)
public void onClick(View v) {

mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Log.e(TAG, "onReceiveValue value=" + value);
}
});
}
public class JsInteration {

@JavascriptInterface
public String back() {
return "hello world";
}
}
}

test.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
function sum(a,b){
return a+b;
}
function s(){
var result =window.android.back();
document.getElementById("p").innerHTML=result;
}

</script>
</head>
<body>
<button onclick="s()">調用本地方法</button>
<a href="file:///android_asset/test2.html">點擊</a>
<p id="p"></p>
</body>
</html>

7. 安卓開發的MVC模式,和html+css+js交互有什麼區別和聯系嗎

現在一般採用MVC的架構模式。
html,css,js就是MVC中的V(view視圖)
關於MVC
M(Model模型),負責數據的處理。
V(View視圖),用戶能看到的視圖界面(html,css,js)
C(Controller控制器),負責處理分發用戶請求。
,而實際上運行的順序為:C->M->V
用戶在瀏覽器輸入網址 這時候路由就接收到一個請求,接收到請求之後路由調用相應控制器(C),控制器再從模型(M)中調取數據,這時候控制器獲取到數據把數據賦值給視圖(V),最後視圖呈現給用戶

8. html5怎麼與android交互

Android中構建HTML5應用
使用WebView控制項,與其他控制項的使用方法相同在layout中使用一個標簽,WebView不包括導航欄,地址欄等完整瀏覽器功能,只用於顯示一個html.
在WebView中載入Web頁面:
(1)注意在manifest文件中加入訪問互聯網的許可權:
<</SPAN>uses-permission android:name="android.permission.INTERNET" />
在Android中點擊一個鏈接,默認是調用應用程序來啟動,因此WebView需要代為處理這個動作通過WebViewClient。
(2)在布局文件中(main.xml),添加標簽WebView的id
[html] view plainprint?
<</SPAN>WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
(2)在onCreate()中使用loadUrl(...)載入html。
[java] view plainprint?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

WebView mWebView = (WebView)findViewById(R.id.webview);
// mWebView.getSettings().setJavaScriptEnabled(true);
// mWebView.setWebChromeClient(new WebChromeClient());
mWebView.loadUrl("file:///android_asset/www/NewFile.html");
}
(3)實現android與js交互
默認情況下WebView中的js是禁用的,通過將WebSettings附加到WebView中啟動js,可以用getSettings()檢索WebSettings,然後用setJavaScriptEnabled()啟動js。
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
(4)在JS中調用Android的函數方法
把本類的一個實例添加到js的全局對象window中,這里是"injs"。
mWebView.addJavascriptInterface(new JavaScriptInterface(),"injs");
實現JavaScriptInterface()類,這里在該類中定義一個方法public void runOnAndroidJavaScript(final String str){...}
在js中調用java函數
windows.injs.runOnAndroidJavaScript(str);//調用android的函數

9. 如何在android中使用html作布局文件

在android開發中,通常使用xml格式來描述布局文件。就目前而言,熟悉android布局及美化的人員少之又少,出現了嚴重的斷層。大部分企業,其實還是程序員自己動手布局。這樣既浪費時間和精力,也未必能達到理想的效果。但是,在企業級的android開發中,使用html頁面進行布局,也有很多的優勢(例如:簡單,大部分開發人員及美工都熟悉,方便統一進行更新,管理)。據筆者了解,已經有不少的公司在使用這種方式進行布局開發。這也可能是一種趨勢。

下面,我將給出一個實例代碼,供大家學習使用html頁面給android應用布局。

packagecom.dazhuo.ui;
importjava.util.List;
importorg.json.JSONArray;
importorg.json.JSONObject;
importcom.dazhuo.domain.Person;
importcom.dazhuo.service.PersonService;
importandroid.app.Activity;
importandroid.content.Intent;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.util.Log;
importandroid.webkit.WebView;

{
privatePersonServiceservice;
privateWebViewwebview;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
service=newPersonService();
webview=(WebView)this.findViewById(R.id.webView);//android內置瀏覽器對象
webview.getSettings().setJavaScriptEnabled(true);//啟用javascript支持
//添加一個js交互介面,方便html布局文件中的javascript代碼能與後台java代碼直接交互訪問
webview.addJavascriptInterface(newPersonPlugin(),"Person");//new類名,交互訪問時使用的別名
//<bodyonload="javascript:Person.getPersonList()">
webview.loadUrl("file:///android_asset/index.html");//載入本地的html布局文件
//其實可以把這個html布局文件放在公網中,這樣方便隨時更新維護例如webview.loadUrl("www.xxxx.com/index.html");
}
//定義一個內部類,從java後台(可能是從網路,文件或者sqllite資料庫)獲取List集合數據,並轉換成json字元串,調用前台js代碼
privatefinalclassPersonPlugin{
publicvoidgetPersonList(){
List<Person>list=service.getPersonList();//獲得List數據集合
//將List泛型集合的數據轉換為JSON數據格式
try{
JSONArrayarr=newJSONArray();
for(Personperson:list)
{
JSONObjectjson=newJSONObject();
json.put("id",person.getId());
json.put("name",person.getName());
json.put("mobile",person.getMobile());
arr.put(json);

}
StringJSONStr=arr.toString();//轉換成json字元串
webview.loadUrl("javascript:show('"+JSONStr+"')");//執行html布局文件中的javascript函數代碼--
Log.i("MainActivity",JSONStr);
}catch(Exceptione){
//TODO:handleexception
}

}
//打電話的方法
publicvoidcall(Stringmobile){
Intentintent=newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+mobile));
startActivity(intent);
}
}
}

轉載

10. android和h5交互,js怎麼在android端列印日誌

Android和H5之間的交互hybridApp開發也不是什麼新鮮事了,其中native和h5之間的交互則是必不可少的。Android中是如何和H5交互的?1、webView載入頁面我們都知道在Android中是通過webView來載入html頁面的,根據HTML文件所在的位置不同寫法也不同://例如:載入assets文件夾下的test.html頁面mWebView.loadUrl("file:///android_asset/test.html")//例如:載入網頁mWebView.loadUrl("")如果只是這樣調用mWebView.loadUrl()載入的話,那麼當你點擊頁面中的鏈接時,頁面將會在你手機默認的瀏覽器上打開。那如果想要頁面在App內中打開的話,那麼就得設置setWebViewClient:mWebView.setWebViewClient(newWebViewClient(){@(WebViewview,Stringurl){mWebView.loadUrl(url);returntrue;}}});2、Android本地通過Java調用HTML頁面中的JavaScript方法想要調用js方法那麼就必須讓webView支持WebSettingswebSettings=mWebView.getSettings();//設置為可調用js方法webSettings.setJavaScriptEnabled(true);若調用的js方法沒有返回值,則直接可以調用mWebView.loadUrl("JavaScript:do()");其中do是js中的方法;若有返回值時我們可以調用mWebView.evaluateJavascript()方法:mWebView.evaluateJavascript("sum(1,2)",newValueCallback(){@(Stringvalue){Log.e(TAG,"onReceiveValuevalue="+value);}});js代碼如下:2、js調用Android本地Java方法在Android4.2以上可以直接使用@JavascriptInterface註解來聲明,下面是在一個本地Java方法publicclassJsInteration{@(){return"helloworld";}}定義完這個方法後再調用mWebView.addJavascriptInterface()方法:mWebView.addJavascriptInterface(newJsInteration(),"android");那麼在js中怎麼來調用呢?4、攔截HTML頁面中的點擊事件mWebView.setWebViewClient(newWebViewClient(){@(WebViewview,Stringurl){//判斷url攔截事件if(url.equals("file:///android_asset/test2.html")){Log.e(TAG,"shouldOverrideUrlLoading:"+url);startActivity(newIntent(MainActivity.this,Main2Activity.class));returntrue;}else{mWebView.loadUrl(url);returnfalse;}}});以上就是Java調用js方法以及js調用Java方法的實現交互方式中的一種。下面給出完整代碼:{publicstaticfinalStringTAG="MainActivity";privateWebViewmWebView;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mWebView=(WebView)findViewById(R.id.webView);mWebView.loadUrl("file:///android_asset/test.html");WebSettingswebSettings=mWebView.getSettings();webSettings.setJavaScriptEnabled(true);mWebView.addJavascriptInterface(newJsInteration(),"android");mWebView.setWebViewClient(newWebViewClient(){@(WebViewview,Stringurl){if(url.equals("file:///android_asset/test2.html")){Log.e(TAG,"shouldOverrideUrlLoading:"+url);startActivity(newIntent(MainActivity.this,Main2Activity.class));returntrue;}else{mWebView.loadUrl(url);returnfalse;}}});}//Android調用有返回值js方法@TargetApi(Build.VERSION_CODES.KITKAT)publicvoidonClick(Viewv){mWebView.evaluateJavascript("sum(1,2)",newValueCallback(){@(Stringvalue){Log.e(TAG,"onReceiveValuevalue="+value);}});}publicclassJsInteration{@(){return"helloworld";}}}test.html調用本地方法點擊

熱點內容
濕地下載ftp 發布:2024-05-19 21:46:10 瀏覽:486
java二分查找演算法 發布:2024-05-19 21:37:38 瀏覽:347
所有編程語言 發布:2024-05-19 21:33:55 瀏覽:665
c語言1到10的階乘的和 發布:2024-05-19 21:32:25 瀏覽:628
php匹配標點符號 發布:2024-05-19 21:14:49 瀏覽:753
可以拍照輸入的c語言編譯器 發布:2024-05-19 21:09:47 瀏覽:181
解壓升降機 發布:2024-05-19 20:51:11 瀏覽:967
請稍作停留密碼是什麼意思 發布:2024-05-19 20:37:12 瀏覽:244
linux結束符 發布:2024-05-19 20:33:05 瀏覽:817
招標伺服器雲 發布:2024-05-19 20:04:19 瀏覽:584