導航:首頁 > 操作系統 > android與h5交互

android與h5交互

發布時間:2022-04-20 17:29:16

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調用本地方法點擊

Ⅱ app內嵌的h5頁面交互上 可以跳轉打開app內的頁面嗎

可以的,具體我記不太清了,大致實現方法是
進入H5頁面,js判斷是ios還是android或是h5,
然後向ios和android索要起對應的方法,然後判斷是否有這個方法,如果有就交還給app

Ⅲ android原生登錄使用webview訪問h5 同步登錄狀態

目前使用的方案:

  1. h5通過js和app交互調用app的token

  2. 2.拿到token後使用ajax做非同步登錄並刷新頁面

  3. 目前的缺點:

  4. 1.會多次刷新頁面

  5. 2.通過js調用時H5需要做部分改動

  6. 優化的方向:

  7. A.APP登陸狀態的變化是請求頁面,登錄後使用webview調用對應域名下的介面實現H5的登錄

  8. B.每次請求H5url增加get登陸的信息,例如訪問 index.php變成 index.php?a=xxx 通過附加信 息同步登錄狀態

  9. 優化的方案不知道那個更好一點

Ⅳ android h5 交互怎麼跳轉

是要攔截 點擊事件嗎?
攔截的話有兩種辦法
一個是 獲取點擊事件的標簽
二:截取url
webView.setWebViewClient(new WebViewClient() {
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);

if (url.contains("攔截的網址") ) {

}

}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

// 重寫此方法表明點擊網頁裡面的鏈接還是在當前的 webview里跳轉,不跳到瀏覽器那邊

view.loadUrl(url);
// if(url.contains("攔截的網址")){
//
// }else{
//
// }
Log.e("loadUrl", "" + url);
return true;
}

@Override

public void onReceivedSslError(WebView view,
SslErrorHandler handler, SslError error) {
// TODO Auto-generated method stub
super.onReceivedSslError(view, handler, error);
handler.proceed();
//handler1.sendEmptyMessage(0);
}

});

Ⅳ 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>

Ⅵ 安卓和h5 交互怎麼去除h5 界面的頭部

  1. 一般都是直接刪除

  2. 如果為了這個事情,還單獨寫個過濾,不太值得。

Ⅶ html5和andriod怎麼傳session

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的函數

Ⅷ h5怎麼打開android app

如果你是自己開發的app嵌套的webview打開的h5,h5和app交互一下,通過自己的app打開其他的app很簡單,但是你要是從UC瀏覽器訪問個自己的h5,再點擊某個按鈕打開手機上的app是做不到的。

Ⅸ 淘寶,京東這種商城的APP都是用Android+h5語言來開發的嗎

一般比較大的平台都會採用Android原生+h5混合開發,這樣能取各方面的優點;
原生開發可以訪問設備中的所有功能,運行速度更快,性能更高,而且可以啟用優秀的離線處理和存儲能力等等,提供最佳的用戶體驗,最優質的用戶界面,最華麗的交互。

原生開發的缺點在逐漸的開發、運營過程中顯現出來。開發成本高,不同平台需要定製不同的app,也就是android定製apk,ios定製app,開發人員需要多平台多語言,人力成本、時間成本較多,通用性差;
H5開發是Html5開發的app,本質上運行在手機瀏覽器中的頁面,一般使用app做一個殼套用瀏覽器運行H5的頁面,由於H5的特性也有很多app使用半原生半H5的hybird app 開發模
H5有許多優點,特別針對原生開發的缺點。如:
直接在網頁上調試和修改,幾乎不用考慮用戶機型和適配的問題,針對原生開發的平台碎片化、開發人力成本、時間成本高;版本升級優勢,網頁的升級與用戶無關,用戶無需下載更新安裝,保證實時送達到用戶手中;上線時間穩定、快速,不需要通過開發市場的審核,有收入分成的開發市場更是可以繞過收入分成。除此以外在視頻媒體方面H5表現也十分優秀的。

H5的缺點有許多,當新技術出現時候許許多多的人都在吹噓它的優點,到真正實用時才對它的缺點正視。H5載入大圖片的時候性能會下降,大量用戶訪問同一個H5應用時性能會下降,響應速度比不上原生app,上網速度也不及原生app,H5不能自動處理動畫上反復交互(網頁游戲),需要藉助css3、javascript。

Ⅹ h5做app和原生app有什麼區別

原生app和h5做的app的區別:
1、開發方面的區別

目前React Native開發越來越火,微信小程序是基於React Native開發的,體驗接近原生APP,發展前景值得重視。不過好在現在非原生APP同樣可以調用藍牙、相機等硬體,也能順利發布到蘋果APP store。
移動Web App
1、因為運行在移動設備的瀏覽器上,所以只需要一個開發項目
2、這種應用可以使用HTML5,CSS3以及JavaScript以及伺服器端語言來完成(PHP,Ruby on Rails,Python)
3、這里可沒有標準的SDK,基本任意選擇別忘了有一些跨平台的開發工具,比如PhoneGap, Sencha Touch 2以及Appcelerator Titanium等等。
原生App
1、每一種移動操作系統都需要獨立的開發項目
2、每種平台都需要獨立的開發語言。Java(Android), Objective-C(iOS)以及Visual C++(Windows phone)等等
3、需要使用各自的軟體開發包,開發工具以及各自的控制項
2、能力方面的區別
移動Web App
只能使用有限的移動硬體設備功能。
原生App
能夠與移動硬體設備的底層功能,比如個人信息,攝像頭以及重力加速器等等。對於這一點感觸很深刻,2016年做新年H5營銷小活動的時候,就是因為沒有考慮到H5不能使用移動硬體端重力加速器而導致臨時替換設計方案。
3、獲取方法的區別
移動Web App
1、從移動設備上的瀏覽器訪問
2、不需要安裝額外的軟體
3、軟體更新只需要伺服器就夠了
4、因為現在沒有什麼商品或賣場提供這種App,不過一般都是嵌套在系統內部,或者內部系 統中使用
5、跨平台開發,用戶不需要去賣場來下載安裝App
6、需要過度依賴網路,沒有任何緩存數據
7、任何時候都可以發布App,因為根本不需要官方賣場的審核
8、如果你已經有了一個Web App,你可以使用 responsive web design來輔助改進
9、所有的用戶都是用同樣的版本
原生App
1、直接下載到設備
2、以獨立的應用程序運行(並不需要瀏覽器)
3、用戶必須手動去下載並安裝這些原生App
4、有一些商店與賣場來幫助用戶尋找你的App,app store裡面應有盡有。
5、原生型APP應用的安裝包相對較大,包含UI元素、數據內容、邏輯框架;
6、手機用戶無法上網也可訪問APP應用中以前下載的數據。
7、原生型的APP可以調用手機終端的硬體設備(語音、攝像頭、簡訊、GPS、藍牙、重力感應等)
8、APP應用更新新功能,涉及到每次要向各個應用商店進行提交審核。
9、用戶可以自由地選擇是否更新軟體版本,所以會出現不同用戶同時使用不同版本的情況
如果企業選擇商領雲進行定製開發原生app,需要單獨開發兩套系統即ios和安卓系統。如果是通過商領雲的在線製作app,則可以同時生成ios和安卓系統的app,並且還可以製作小程序、移動網站和微商城,非常方便,而且價格也只需幾萬左右,具體需要看功能需求。

閱讀全文

與android與h5交互相關的資料

熱點內容
怎麼初步認識編程 瀏覽:208
為什麼程序員都喜歡谷歌 瀏覽:891
壓縮性骨拆能自愈嗎 瀏覽:277
安卓怎麼設置游戲畫面 瀏覽:114
k線上寫字源碼 瀏覽:457
單擊按鈕保存資料源碼 瀏覽:354
華為gt加密卡 瀏覽:213
河北超融合伺服器廠家雲主機 瀏覽:894
芙兒優安全座椅app怎麼連接 瀏覽:294
專業美團騎手app怎麼開通 瀏覽:949
個人音樂分享網站源碼 瀏覽:375
在新電腦上怎麼注冊加密狗 瀏覽:123
最後一戰游戲源碼 瀏覽:5
phpmysql實例下載 瀏覽:751
傳智黑馬安卓非加密 瀏覽:553
伺服器如何配置host 瀏覽:1001
守望執行命令 瀏覽:371
加密狗插上去了怎麼辦 瀏覽:624
錘子m1怎麼把文件夾重置 瀏覽:213
APP的數據會存在哪裡 瀏覽:66