Cordova开发安卓app进行Bundle解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: (创建于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();
                        }
                    }
相关文章
|
6天前
|
安全 前端开发 Android开发
探索移动应用与系统:从开发到操作系统的深度解析
在数字化时代的浪潮中,移动应用和操作系统成为了我们日常生活的重要组成部分。本文将深入探讨移动应用的开发流程、关键技术和最佳实践,同时分析移动操作系统的核心功能、架构和安全性。通过实际案例和代码示例,我们将揭示如何构建高效、安全且用户友好的移动应用,并理解不同操作系统之间的差异及其对应用开发的影响。无论你是开发者还是对移动技术感兴趣的读者,这篇文章都将为你提供宝贵的见解和知识。
|
12天前
|
存储 缓存 监控
后端开发中的缓存机制:深度解析与最佳实践####
本文深入探讨了后端开发中不可或缺的一环——缓存机制,旨在为读者提供一份详尽的指南,涵盖缓存的基本原理、常见类型(如内存缓存、磁盘缓存、分布式缓存等)、主流技术选型(Redis、Memcached、Ehcache等),以及在实际项目中如何根据业务需求设计并实施高效的缓存策略。不同于常规摘要的概述性质,本摘要直接点明文章将围绕“深度解析”与“最佳实践”两大核心展开,既适合初学者构建基础认知框架,也为有经验的开发者提供优化建议与实战技巧。 ####
|
10天前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
17天前
|
监控 前端开发 安全
如何开发一个网站:全面解析与实战指南
在数字化时代,网站是企业和个人展示形象、传播信息的关键平台。本文提供从规划、设计、开发、上线到后期维护的全方位网站开发指南,涵盖明确目标、分析用户、设定功能需求、设计风格、技术选型、测试部署及优化升级等内容,帮助你打造既美观又实用的网站。
27 4
|
13天前
|
前端开发 Android开发 UED
移动应用与系统:从开发到优化的全面解析####
本文深入探讨了移动应用开发的全过程,从最初的构思到最终的发布,并详细阐述了移动操作系统对应用性能和用户体验的影响。通过分析当前主流移动操作系统的特性及差异,本文旨在为开发者提供一套全面的开发与优化指南,确保应用在不同平台上均能实现最佳表现。 ####
18 0
|
17天前
|
开发框架 Dart Android开发
安卓与iOS的跨平台开发:Flutter框架深度解析
在移动应用开发的海洋中,Flutter作为一艘灵活的帆船,正引领着开发者们驶向跨平台开发的新纪元。本文将揭开Flutter神秘的面纱,从其架构到核心特性,再到实际应用案例,我们将一同探索这个由谷歌打造的开源UI工具包如何让安卓与iOS应用开发变得更加高效而统一。你将看到,借助Flutter,打造精美、高性能的应用不再是难题,而是变成了一场创造性的旅程。
|
1月前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
63 1
|
2月前
|
机器学习/深度学习 安全 搜索推荐
中国CRM市场深度解析:本土化定制开发的领军厂商与未来趋势
国内CRM软件企业正面临日益增长的本土定制需求,这不仅考验服务商的综合水平,也推动了市场的快速发展。本文将深入解析中国CRM市场的现状,探讨领军厂商的优势,并预测未来趋势,包括智能化、集成化、本土化与国际化并行及云服务模式的普及。
|
1月前
|
开发工具 Android开发 数据安全/隐私保护
探索移动应用的世界:从开发到操作系统的全面解析
【10月更文挑战第33天】在数字化时代,移动应用已成为我们日常生活中不可或缺的一部分。本文将深入探讨移动应用的开发过程,包括编程语言、开发工具和框架的选择,以及如何构建用户友好的界面。同时,我们还将分析移动操作系统的核心功能和安全性,以帮助读者更好地理解这些应用程序是如何在各种设备上运行的。无论你是开发者还是普通用户,这篇文章都将为你揭示移动应用背后的奥秘。
|
1月前
|
机器学习/深度学习 Android开发 UED
移动应用与系统:从开发到优化的全面解析
【10月更文挑战第25天】 在数字化时代,移动应用已成为我们生活的重要组成部分。本文将深入探讨移动应用的开发过程、移动操作系统的角色,以及如何对移动应用进行优化以提高用户体验和性能。我们将通过分析具体案例,揭示移动应用成功的关键因素,并提供实用的开发和优化策略。

推荐镜像

更多