一种安卓应用的广播代理方法和装置制造方法及图纸

技术编号:15329304 阅读:62 留言:0更新日期:2017-05-16 13:00
本发明专利技术公开了一种安卓应用的广播代理方法和装置,其中所述方法包括:构造虚拟机环境,将安卓系统中的一个或多个指定安卓应用的分身应用放入虚拟机中,使得每个指定安卓应用的分身应用可以与相应的指定安卓应用并行运行;通过虚拟机的常驻服务代理虚拟机中的指定安卓应用的分身应用接受广播消息,并按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器。本方案使得用户在安卓系统中并行运行同一应用程序时,避免由于广播接收器注册信息重复而无法接受广播消息,甚至程序无法运行的弊端。

Broadcast proxy method and device for Android application

The invention discloses a method and a device for broadcasting agent Android applications, wherein said method comprises: constructing a virtual machine environment, the application will spare one or more designated Android application in Android system into the virtual machine, so that each application can be specified at Android and Android applications specify corresponding parallel operation through the application of permanent service; one virtual machine agent named Android application of virtual machine in the received broadcast message, and in accordance with the preset strategy will be the broadcast message to the corresponding radio receiver application of Android application of the specified member. This scheme enables users to run the same application in parallel in Android, so as to avoid the drawbacks of receiving broadcast messages and even the program can not run because of the repeated registration of the broadcast receiver.

【技术实现步骤摘要】
一种安卓应用的广播代理方法和装置
本专利技术涉及互联网
,具体涉及一种安卓应用的广播代理方法和装置。
技术介绍
现有技术中,安卓系统中的应用程序被安装时,应用程序安装包中的配置文件会向系统进行注册,以声明应用程序在运行过程中所需要用到的各种相关组件、资源的信息,以及,应用程序在运行过程中也可以向系统动态地进行进行注册,相应地,系统会记住应用程序被安装时或运行过程中的注册信息。以应用程序所用到的广播接收器组件为例,当有符合条件的广播消息到达时,该应用程序的广播接收器会正常接收并作出相应处理。然而,当用户想在同一个安卓系统中,并行运行两个相同的应用程序时,由于两个相同的应用程序中的注册信息重复,系统无法接纳两个相同的应用程序的相同的注册信息,仍然以应用程序所用到的广播接收器组件为例,该应用程序对系统发送的或者系统转发的广播消息的应答就会出现异常,甚至无法接受到广播消息。这给用户带来诸多不便。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的安卓应用的广播代理方法和装置。依据本专利技术的一个方面,提供了一种安卓应用的广播代理方法,该方法包括:构造虚拟机环境,将安卓系统中的一个或多个指定安卓应用的分身应用放入虚拟机中,使得每个指定安卓应用的分身应用可以与相应的指定安卓应用并行运行;代理虚拟机中的指定安卓应用的分身应用接收广播消息,按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器。可选地,所述代理虚拟机中的指定安卓应用的分身应用接收广播消息包括:监听安卓系统中发送广播消息的事件;当监听到安卓系统中发送广播消息的事件时,判断所述广播消息的目标广播接收器是否为虚拟机中的指定安卓应用的分身应用的广播接收器;是则,拦截并接收所述广播消息。可选地,所述监听安卓系统中发送广播消息的事件包括:将钩子函数挂载在安卓系统中发送广播消息的接口上,当拦截到所述发送广播消息的接口发送的广播消息时,确定监听到安卓系统中发送广播消息的事件;该方法进一步包括:当确定所述广播消息的目标广播接收器不是虚拟机中的指定安卓应用的分身应用的广播接收器时,放行所述广播消息。可选地,在所述代理虚拟机中的指定安卓应用的分身应用接收广播消息之前,该方法进一步包括:获取各指定安卓应用的分身应用所注册的广播接收器的相关信息并保存至配置管理表中;则所述判断所述广播消息的目标广播接收器是否为虚拟机中的指定安卓应用的分身应用的广播接收器包括:判断所述广播消息的目标广播接收器是否命中所述配置管理表中记录的广播接收器;是则,确定所述广播消息的目标广播接收器是虚拟机中的指定安卓应用的分身应用的广播接收器;否则,确定所述广播消息的目标广播接收器不是虚拟机中的指定安卓应用的分身应用的广播接收器。可选地,所述获取各指定安卓应用的分身应用所注册的广播接收器的相关信息并保存至配置管理表中包括:获取各指定安卓应用的安装包复件并保存至指定目录,作为各指定安卓应用的分身应用的安装包;解析各指定安卓应用的分身应用的安装包中的配置文件,获取各指定安卓应用的分身应用在相应配置文件中所注册的广播接收器的相关信息并保存至所述配置管理表中的静态注册表。可选地,所述获取各指定安卓应用的分身应用所注册的广播接收器的相关信息并保存至配置管理表中还包括:监听虚拟机中的指定安卓应用的分身应用向安卓系统注册广播接收器的事件;当监听到该事件时,禁止该事件继续执行;获取该事件对应的广播接收器的相关信息并保存至所述配置管理表中的动态注册表。可选地,所述监听虚拟机中的各指定安卓应用的分身应用向安卓系统注册广播接收器的事件包括:将钩子函数挂载在虚拟机中注册广播接收器的接口上,当拦截到所述注册广播接收器的接口发送的注册请求时,确定监听到虚拟机中的指定安卓应用的分身应用向安卓系统注册广播接收器的事件;所述当监听到该事件时,禁止该事件继续执行;获取该事件对应的广播接收器的相关信息并保存至所述配置管理表中的动态注册表包括:当监听到所述注册请求时,强制结束所述注册请求的继续传播;从所述注册请求中提取对应的广播接收器的相关信息并保存至所述动态注册表。可选地,所述静态注册表和所述动态注册表中的每个广播接收器的相关信息包括:该广播接收器的属性数据;所述判断所述广播消息的目标广播接收器是否命中所述配置管理表中记录的广播接收器包括:从所述广播消息对应的Intent参数中提取指示目标广播接收器的属性数据,判断所提取的属性数据是否匹配于所述静态注册表和所述动态注册表中的广播接收器的属性数据;如果所提取的属性数据匹配于所述静态注册表中的广播接收器的属性数据,确定所述广播消息的目标广播接收器命中所述静态注册表;如果所提取的属性数据匹配于所述动态注册表中的广播接收器的属性数据,确定所述广播消息的目标广播接收器命中所述动态注册表。可选地,该方法进一步包括:在安卓系统中预先声明用于运行广播接收器的预留进程;当所述广播消息的目标广播接收器命中所述静态注册表时,所述按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器包括:启动所述用于运行广播接收器的预留进程;在所述预留进程中对所述静态注册表中命中的广播接收器进行实例化;将所述广播消息发送至该实例化后的广播接收器。可选地,所述在所述预留进程中对所述静态注册表中命中的广播接收器进行实例化包括:根据所述广播消息对应的Intent参数中指示目标广播接收器的属性数据在所述预留进程中对所述广播接收器进行实例化;所述将所述广播消息发送至该实例化后的广播接收器包括:将所述广播消息对应的Intent参数发送至该实例化后的广播接收器,并回调该广播接收器中的onReceive方法。可选地,所述动态注册表中的每个广播接收器的相关信息还包括:该广播接收器所属的进程信息;当所述广播消息的目标广播接收器命中所述动态注册表时,所述按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器包括:根据所述动态注册表中命中的广播接收器所属的进程信息,将所述广播消息发送至所述动态注册表中命中的广播接收器所属的进程中,使得该进程中的广播接收器接收所述广播消息。可选地,所述动态注册表中的每个广播接收器所属的进程信息包括:该广播接收器对应的注册广播接收器的事件所用的Binder机制信息;所述根据所述动态注册表中命中的广播接收器所属的进程信息,将所述广播消息发送至所述动态注册表中命中的广播接收器所属的进程中包括:根据所述动态注册表中命中的广播接收器对应的注册广播接收器的事件所用的Binder机制信息,通过调用相应的Binder机制将所述广播消息对应的Intent参数发送至相应的进程中。可选地,所述代理虚拟机中的指定安卓应用的分身应用接收广播消息,按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器包括:通过虚拟机中的常驻服务代理指定安卓应用的分身应用接收广播消息,按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器。依据本专利技术的另一个方面,提供了一种安卓应用的广播代理装置,该装置包括:环境构造单元,适于构造虚拟机环境,将安卓系统中的一个或多个指定安卓应用的分身应用放入虚拟机中,使得每个指定安卓应用的分身应用可以与相应的本文档来自技高网...
一种安卓应用的广播代理方法和装置

【技术保护点】
一种安卓应用的广播代理方法,其中,包括:构造虚拟机环境,将安卓系统中的一个或多个指定安卓应用的分身应用放入虚拟机中,使得每个指定安卓应用的分身应用可以与相应的指定安卓应用并行运行;代理虚拟机中的指定安卓应用的分身应用接收广播消息,按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器。

【技术特征摘要】
1.一种安卓应用的广播代理方法,其中,包括:构造虚拟机环境,将安卓系统中的一个或多个指定安卓应用的分身应用放入虚拟机中,使得每个指定安卓应用的分身应用可以与相应的指定安卓应用并行运行;代理虚拟机中的指定安卓应用的分身应用接收广播消息,按照预设策略将所述广播消息转发至相应指定安卓应用的分身应用的广播接收器。2.如权利要求1所述的方法,其中,所述代理虚拟机中的指定安卓应用的分身应用接收广播消息包括:监听安卓系统中发送广播消息的事件;当监听到安卓系统中发送广播消息的事件时,判断所述广播消息的目标广播接收器是否为虚拟机中的指定安卓应用的分身应用的广播接收器;是则,拦截并接收所述广播消息。3.如权利要求2所述的方法,其中,所述监听安卓系统中发送广播消息的事件包括:将钩子函数挂载在安卓系统中发送广播消息的接口上,当拦截到所述发送广播消息的接口发送的广播消息时,确定监听到安卓系统中发送广播消息的事件;该方法进一步包括:当确定所述广播消息的目标广播接收器不是虚拟机中的指定安卓应用的分身应用的广播接收器时,放行所述广播消息。4.如权利要求2所述的方法,其中,在所述代理虚拟机中的指定安卓应用的分身应用接收广播消息之前,该方法进一步包括:获取各指定安卓应用的分身应用所注册的广播接收器的相关信息并保存至配置管理表中;则所述判断所述广播消息的目标广播接收器是否为虚拟机中的指定安卓应用的分身应用的广播接收器包括:判断所述广播消息的目标广播接收器是否命中所述配置管理表中记录的广播接收器;是则,确定所述广播消息的目标广播接收器是虚拟机中的指定安卓应用的分身应用的广播接收器;否则,确定所述广播消息的目标广播接收器不是虚拟机中的指定安卓应用的分身应用的广播接收器。5.如权利要求4所述的方法,其中,所述获取各指定安卓应用的分身应用所注册的广播接收器的相关信息并保存至配置管理表中包括:获取各指定安卓应用的安装包复件并保存至指定目录,作为各指定安卓应用的分身应用的安装包;解析各指定安卓应用的分身应用的安装包中的配置文件,获取各指定安卓应用的分...

【专利技术属性】
技术研发人员:任太胜刘刚王云鹏
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1