Cordova开发安卓app进行Bundle解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: (创建于2018/2/9)最近在一个混合开发的项目中遇到的一种数据解析方式,使用Cordova进行原生和js的通信,原生接收js消息的方式final BroadcastReceiver popReceiver = new BroadcastRece...

(创建于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<content.size();i++){
                                //0,1,2分别为key
                                Bundle bundle = content.getBundle(i+"");
                                Bundle messages = bundle.getBundle("messages");

                                JSONArray messageArray = new JSONArray();
                                for (int j=0;j<messages.size();j++){
                                    Bundle data = messages.getBundle(j + "");
                                    String type = data.getString("type");
                                    String dataContent = data.getString("content");
                                    String create_at = data.getString("created_at");
                                    String headimgurl = data.getString("headimgurl");

                                    JSONObject messageObj = new JSONObject();
                                    messageObj.put("type",type);
                                    messageObj.put("content",dataContent);
                                    messageObj.put("created_at",create_at);
                                    messageObj.put("headimgurl",headimgurl);

                                    messageArray.put(j,messageObj);
                                }
                                int id = bundle.getInt("id");
                                String nickname = bundle.getString("nickname");

                                JSONObject contentObj = new JSONObject();
                                contentObj.put("messages",messageArray);
                                contentObj.put("id",id);
                                contentObj.put("nickname",nickname);


                                jsonObject.put("content",contentObj);
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
相关文章
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
501 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
592 1
|
20天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
76 9
|
18天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
22天前
|
安全 5G Android开发
安卓与iOS的较量:技术深度解析
【10月更文挑战第24天】 在移动操作系统领域,安卓和iOS无疑是两大巨头。本文将深入探讨这两个系统的技术特点、优势和不足,以及它们在未来可能的发展方向。我们将通过对比分析,帮助读者更好地理解这两个系统的本质和内涵,从而引发对移动操作系统未来发展的深思。
39 0
|
27天前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
1月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
331 0
|
7天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
25 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
67 0

推荐镜像

更多
下一篇
无影云桌面