Cordova开发安卓app进行Bundle解析

(创建于2018/2/9)

最近在一个混合开发的项目中遇到的一种数据解析方式,使用Cordova进行原生和js的通信,原生接收js消息的方式

final BroadcastReceiver popReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                
            }
}
LocalBroadcastManager.getInstance(this).registerReceiver(popReceiver, new IntentFilter(Constants.LETTER_LIST));

所以收到js消息之后,都是从intent中拿,一般都是这样

Bundle extras = intent.getExtras();

然后从bundle中获取数据,如果是字符串,直接解析即可

String view = extras.getString(Constants.VIEW);

较复杂的数据,比如一个对象,一个集合j,就需要用到今天要说的方式来解析了 如下:

Bundle[{content=Bundle[{0=Bundle[{messages=Bundle[{0=Bundle[{type=us, content=啦咯啦咯啦咯, created_at=2018-02-09 16:55:06, headimgurl=https://naneng-user.oss-cn-shanghai.aliyuncs.com
/default_user_head.jpg}], 1=Bundle[{type=us, content=啦咯啦咯啦咯吐了老K, created_at=2018-02-09 
16:55:11, headimgurl=https://naneng-user.oss-cn-shanghai.aliyuncs.com/default_user_head.jpg}], 
2=Bundle[{type=us, content=T恤咯OK, created_at=2018-02-09 16:55:16, headimgurl=https://naneng-
user.oss-cn-shanghai.aliyuncs.com/default_user_head.jpg}]}], id=116, nickname=17621421360}]}]}]

解析方法:

//可以看到最外层是一个bundle,所以获取到这个bundle,这里的bundle即可以是对象也可以是集合,看括号的形式[]表示对象,{}表示集合,所以最外层bundle是对象
Bundle extras = intent.getExtras();
                    if (extras != null){
                        try {
                            JSONObject jsonObject = new JSONObject();
                            //以content为key的这个bundle是一个集合,可以看到,里边有三个元素,0,1,2分别为key
                            Bundle content = extras.getBundle("content");

                            for (int i=0;i

你可能感兴趣的:(Cordova开发安卓app进行Bundle解析)