uniapp和Android原生數(shù)據(jù)交互

一、在uniapp項(xiàng)目添加一個類茎杂,專門用來處理和原生進(jìn)行交互使用;

import Vue from 'vue';

! function(root, factory) {

if (typeof exports == 'object' && typeof module != 'undefined') {

module.exports = factory()

} else if (typeof define == 'function' && define.amd) {

define(factory)

} else {

document.addEventListener('plusready', function() {

// 修改此處為插件命名 ?注釋---1

var moduleName = 'uniappPlugin';

root.plus[moduleName] = factory()

}, false);

}

}(this, function() {

//在此處定義自己的方法 ?注釋---2()

var _BARCODE = 'uniappPlugin';

var plugintest = {

/** 跳轉(zhuǎn)原生登錄頁面 */

JumpNativeLoginView: function(successCallback, errorCallback) {

var success = typeof successCallback !== 'function' ? null : function(args) {

successCallback(args);

},

fail = typeof errorCallback !== 'function' ? null : function(code) {

errorCallback(code);

};

// 注釋---3

var callbackID = plus.bridge.callbackId(success, fail);

? ? ? ? ? ? //注釋---4

? ? ? ? ? ? ?let userName = "";

let userPwd = "";

// 注釋---5

return plus.bridge.exec(_BARCODE, "startLoginActivity", [callbackID,userName,userPwd]);

}

}

return plugintest;

});

代碼注釋說明:

注釋1和注釋2:下面已經(jīng)說明了侠讯,要和原生添加插件類同名淫痰;

注釋3:創(chuàng)建一個回調(diào)ID,uniapp和原生就是通過這個callbackID進(jìn)行識別和通訊

注釋4:添加額外的參數(shù)傳到原生(建議使用字符串或者json字符串)

注釋5:uniapp異步調(diào)用原生插件類的方法

二循衰、在vue頁面或者JS文件中需要調(diào)用的地方添加以下代碼

AndroidPlugin:這個是導(dǎo)入上面代碼類文件的一個別名---import AndroidPlugin from './androidPlugin.js';

AndroidPlugin.JumpNativeLoginView(function(result) {

//這里是處理原生成功后返回的一個回調(diào)(可以獲取登錄返回的用戶信息或者原生返回其它的一些信息等)

}, function(fail) {

//這里是原生失敗后返回的一個回調(diào)(一般這里不會添加什么代碼)

});

三铲敛、在AndroidStudio中添加一個插件類命名為PluginFeature,并將它繼承為StandardFeature(StandardFeature是uniapp打包SDK中的一個插件擴(kuò)展類)会钝;

四伐蒋、在uniapp打包SDK中的assets/data/dcloud_properties.xml文件中添加以下代碼

?

注意:name是要和上面代碼中注釋1和注釋2同名的,大家不要搞錯了顽素,否則會調(diào)用不到咽弦,value就是你創(chuàng)建的插件擴(kuò)展類路徑

public class PluginFeature extends StandardFeature {

private static JSONArray tempArray;

private static IWebview iWebview;

/**

* 調(diào)用原生登錄

*

* @param iWebview uniapp傳過來的webview參數(shù)

* @param array? ? uniapp傳回來的callID和其它的數(shù)據(jù)

*/

public void startLoginActivity(IWebview iWebview, JSONArray array) {

this.tempArray = array;

this.iWebview = iWebview;

//獲取回調(diào)ID(一定要獲取這個,原生通過這個ID來給uniapp回傳數(shù)據(jù)胁出,uniapp也是靠這個ID進(jìn)行解析)

String CallBackID = tempArray.optString(0);

//獲取uniapp傳過來的userName和userPwd

String userName = tempArray.optString(1);

String userPwd = tempArray.optString(2);

//TODO:跳轉(zhuǎn)登錄頁面

Context context = MyApplication.app;

Intent intent = new Intent(context, LoginActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(intent);

//將數(shù)據(jù)異步回傳到uniapp中

JSUtil.execCallback(iWebview, CallBackID,

"登錄成功后的用戶信息回傳到uniapp中型型,記住一定要字符串,json字符串也可以",

JSUtil.OK, false);

}

}

注意點(diǎn):

(1)插件的擴(kuò)展名一定要一致全蝶,否則是無法互相通訊的

(2)iOS使用這種方法也是可以實(shí)現(xiàn)原生iOS和uniapp的數(shù)據(jù)交互的

(3)本人發(fā)現(xiàn)原生拿到的callBackID只能使用一次闹蒜,原生只要回調(diào)回去后,這個callBackID就失效不能再次使用了(本人也不知道原因抑淫,不過按照個人理解也合理绷落,類似iOS中的委托,使用完就釋放了)

(4)原生回調(diào)傳回去的數(shù)據(jù)是字符串類型的始苇,如果是json字符串砌烁,uniapp需要轉(zhuǎn)換成對象需要使用JSON.parse(result)才方便使用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末函喉,一起剝皮案震驚了整個濱河市避归,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌管呵,老刑警劉巖梳毙,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捐下,居然都是意外死亡账锹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門坷襟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奸柬,“玉大人,你說我怎么就攤上這事啤握∧衤疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵排抬,是天一觀的道長懂从。 經(jīng)常有香客問我,道長蹲蒲,這世上最難降的妖魔是什么番甩? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮届搁,結(jié)果婚禮上缘薛,老公的妹妹穿的比我還像新娘。我一直安慰自己卡睦,他們只是感情好宴胧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著表锻,像睡著了一般恕齐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瞬逊,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天显歧,我揣著相機(jī)與錄音,去河邊找鬼确镊。 笑死士骤,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕾域。 我是一名探鬼主播拷肌,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了巨缘?” 一聲冷哼從身側(cè)響起厢绝,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎带猴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懈万,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拴清,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了会通。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片口予。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涕侈,靈堂內(nèi)的尸體忽然破棺而出沪停,到底是詐尸還是另有隱情,我是刑警寧澤裳涛,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布木张,位于F島的核電站,受9級特大地震影響端三,放射性物質(zhì)發(fā)生泄漏舷礼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一郊闯、第九天 我趴在偏房一處隱蔽的房頂上張望妻献。 院中可真熱鬧,春花似錦团赁、人聲如沸育拨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽熬丧。三九已至,卻和暖如春剧浸,著一層夾襖步出監(jiān)牢的瞬間锹引,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工唆香, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫌变,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓躬它,卻偏偏與公主長得像腾啥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353