ionic2--實現Android中ionic和原生之間相互傳值

第一步:ionic2插件安裝

$ ionic plugin add --save cordova-plugin-broadcaster
$ npm install --save @ionic-native/broadcaster

第二步:ionic2中的代碼

test1() {
// Send event to Native
this.broadcaster.fireNativeEvent('jumpNative', {"item":"ionic的值"}).then(()=>console.log('success'));
// Listen to events from Native(實現廣播的注冊和監聽)
// (注意:由于傳值是通過Android的廣播機制執行的,在點擊原生按鈕給ionic2傳值的時候,必須先執行以下代碼實現廣播注冊)
this.broadcaster.addEventListener('didShow').subscribe((event)=>
console.log('這句話是在ionic 里面打印的:===='+event['data'])
);
}

第三步 原生中js/tstoNative接收代碼

final BroadcastReceiver receiver =new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
try{
String userdata = intent.getExtras().getString("item");
//            JSONObject data = new JSONObject(userdata);
Toast.makeText(context,"跳轉"+userdata,Toast.LENGTH_SHORT).show();
Intent intent1 =newIntent(MainActivity.this, TestActivity.class);
startActivity(intent1);
}catch(Exception e) {
throw newRuntimeException(e);
}
}
};
LocalBroadcastManager.getInstance(this)
.registerReceiver(receiver,newIntentFilter("jumpNative"));

注:此段代碼最好在onCreate中編寫

原生中Nativetojs/ts發送代碼

button.setOnClickListener(newView.OnClickListener() {
@Override
public voidonClick(View v) {
//給ionic傳值
Intent intent =newIntent("didShow");
Bundle b =newBundle();
b.putString("userdata","{ data: 'test'}");
intent.putExtras(b);
LocalBroadcastManager.getInstance(TestActivity.this).sendBroadcastSync(intent);
});

注:我將這段代碼寫到另一個界面,通過ionic給native傳遞事件實現跳轉,ios中可以將ionic界面和原生界面寫到一起,在android中試了幾次不行,如果有朋友知道方法可以私聊我 -

打印結果

05-18 17:40:55.463 23520-23520/com.ionicframework.testionic2848246 I/chromium: [INFO:CONSOLE(55673)] "這句話是在ionic 里面打印的:====test", source: file:///android_asset/www/build/main.js (55673)

ios實現方法:ionic2 與 iOS 互相傳值的最簡單方式
官方網站詳解:官網詳解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容