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 互相传值的最简单方式
官方网站详解:官网详解

你可能感兴趣的:(ionic2--实现Android中ionic和原生之间相互传值)