天天看點

android原生代碼轉h5,Android原生和H5互動;Android和H5混合開發;WebView點選H5界面跳轉到Android原生界面。...

當時業務的需求是這樣的,H5有一個活動商品清單的界面,IOS和Android共用這一個界面,點選商品可以跳轉到Android原生的商品詳情界面并傳遞商品ID;  大概就是點選H5界面跳轉到Android原生界面;

好了,需求已經分析完畢了,Android隻需要擷取H5的點選事件和傳遞的參數;

來,上代碼:

/啟用支援javascript

WebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);

Android4.2以上需要@JavascriptInterface注解,其目的是為了安全;

public class JavaScriptObject{

public JavaScriptObject(Activity activity) {

}

@JavascriptInterface

public void setToken(String token){

//token就是商品的ID,這裡拿到商品的ID後直接跳轉到商品詳情頁,并把id傳遞過去

}

@JavascriptInterface

public void definedShare(String ShareJson){

}

}

webView.addJavascriptInterface(new JavaScriptObject(this), "android");

到這裡Android端需要寫的就完成了;

這個是我截的圖,可以看一下:

android原生代碼轉h5,Android原生和H5互動;Android和H5混合開發;WebView點選H5界面跳轉到Android原生界面。...

這裡是H5需要寫的代碼:

function s(){

//調用Android的setToken()方法

var result =window.android.setToken(goodsId);

document.getElementById("p").innerHTML=result;

}

----------------------------------------------------------------------------------------------------------------------------------

附:如果在Android端調用H5中的方法:

//傳固定字元串可以直接用單引号括起來

mWebView.loadUrl("javascript:alertMessage('哈哈')");//通路H5裡帶參數的方法,alertMessage(message)為H5裡的方法

//當出入變量名時,需要用轉義符隔開

String content="1016";

mWebView.loadUrl("javascript:alertMessage(\"" +content+ "\")" );

//Android調用有傳回值js方法,安卓4.4以上才能用這個方法

mWebView.evaluateJavascript("11", new ValueCallback() {

@Override

public void onReceiveValue(String value) {

Log.i(TAG, "js傳回的結果為=" + value);

}

});

抽成方法:

private void callJS(String callback, String status) {

if (TextUtils.isEmpty(status)) {

if (AndroidUtils.isKitkat()) {

mWebView.evaluateJavascript("javascript:" + callback + "()", null);

} else {

mWebView.loadUrl("javascript:" + callback + "()");

}

} else {

if (AndroidUtils.isKitkat()) {

mWebView.evaluateJavascript("javascript:" + callback + "('" + status + "')", null);

} else {

mWebView.loadUrl("javascript:" + callback + "('" + status + "')");

}

}

}

JS與APP原生控件互動

"熱更新"."熱部署"相信對于混合式開發的童鞋一定不陌生,那麼APP怎麼避免每次更新都要在APP應用商店釋出呢?這裡就用到了混合式開發的概念,對于電商網站尤其顯 ...

基于H5的混合開發介紹(一)WebView

轉自: https://www.cnblogs.com/sanchang/p/9261461.html 一 WebView到底是什麼    1 WebView是一種控件,它基于webkit引擎,是以具 ...

Hybrid小程式混合開發之路 - 資料互動

HTML+CSS是曆史悠久.超高自由度.控制精準.表現能力極強.編碼簡單.學習門檻超低.真跨平台的一種UI界面開發方式. 本文介紹的是微信小程式和H5混合開發的一種資料互動方式. 很多應用在原生界面中 ...

移動web、webApp、混合APP、原生APP、androd H5混合開發 當無網絡下,android怎麼加載H5界面

PhoneGap是一個采用HTML,CSS和JavaScript的技術,建立移動跨平台移動應用程式的快速開發平台.它使開發者能夠在網頁中調用IOS,Android,Palm,Symbian,WP7,W ...

Android中Native和H5互動

1.概述 時至今日,H5的跨平台性越發凸顯優勢,一套代碼适配android.ios,既能減少開發成本,又便于更新與維護.但是native的性能體驗也确實更佳,尤其展現在複雜界面和頻繁變化的界面上.事實 ...

Android WebView 基本設定與H5 互動

mWebView.setDrawingCacheEnabled(true); WebChromeClient webChromeClient = new WebChromeClient(); mWeb ...

用戶端相關知識學習(三)之Android原生與H5互動的實作

Android原生與H5互動的實作 H5調用原生的方式 方式可能有多種,根據開發經驗,接觸過兩種方式. 方法一:Android向H5注入全局js對象,也就是H5調Android 1.首先對WebVie ...

Android與H5互動

1.初始化WebView控件 webView = (WebView) findViewById(R.id.webview); 2.設定WebView屬性 WebSettings webSettings ...

Android與H5互動(java與js的互動)

一.理論概述 1.js調用java方法 直接調用WebView的該方法就可以添加接口了,不過先要啟動互動 // 啟用javascript mWebView.getSettings().setJavaS ...

随機推薦

jsp頁面常用控件

1.點選按鈕傳回 上一頁: