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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容