对象拖拽方法、设备和存储介质
技术领域
本发明实施例涉及计算机
技术领域
,尤其涉及一种对象拖拽方法、设备和存储介质。背景技术
随着计算机技术的发展,为了扩展Linux系统下的应用程序(Aplication,简称APP),丰富应用环境,Linux系统上可支持运行安卓Android系统的应用程序APP。
据发明人所知,Linux系统支持Android的一种方案是采用虚拟机,另一种方案是采用Anbox或xDroid等方案。无论是哪种方案, Linux系统中的APP与Android系统中的 APP之间传递内容(例如文本/图像或文件等)时,一般只能实现从Linux系统向Android系统中以复制的方式导入内容。
发明内容
本发明实施例提供一种对象拖拽方法、设备和存储介质,可以实现跨系统的APP之间传递内容,操作简便。
本发明实施例提供一种对象拖拽方法,应用于电子设备,所述电子设备运行第一操作系统和以容器化运行在第一操作系统中的第二操作系统,第一操作系统包括第一应用程序APP,第二操作系统包括第二APP,所述方法包括:
建立第一操作系统与第二操作系统的连接;
响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;
在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;
根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作。
根据本发明实施例提供的一种对象拖拽方法,可选的,所述根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作,包括:
控制所述第二APP根据所述拖拽数据获取所述目标对象;在所述第二APP内执行对所述目标对象的目标操作;或,
根据所述拖拽数据包括的所述目标对象的内容,在所述第二APP内执行对所述目标对象的目标操作。
可选的,所述执行对所述目标对象的目标操作之后,还包括:
根据所述拖拽数据包括的第二APP的窗口标识,在所述第二APP对应的窗口内显示目标图标,所述目标图标是基于所述拖拽数据生成的。
可选的,所述控制所述第二APP根据所述拖拽数据获取所述目标对象,包括:
在所述拖拽数据包括所述目标对象的存储路径的情况下,控制所述第二APP根据所述存储路径获取所述目标对象;或,
在所述拖拽数据包括所述目标对象所占共享内存的访问标识的情况下,控制所述第二APP根据所述访问标识从所述共享内存中获取所述目标对象;或,
在所述拖拽数据包括所述目标对象的文件描述符的情况下,控制所述第二APP根据所述文件描述符获取所述目标对象。
可选的,所述第一操作系统包括第一窗口管理器,所述第二操作系统包括第二窗口管理器,所述方法还包括:建立第一窗口管理器和第二窗口管理器的连接;
控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据,包括:
控制所述第一窗口管理器向所述第二窗口管理器发送所述拖拽数据;
控制所述第二窗口管理器根据所述拖拽数据包括的窗口标识,向所述第二APP发送所述拖拽数据。
可选的,所述第一操作系统包括:第一窗口管理器、第一服务代理组件,所述第二操作系统包括第二窗口管理器、第二服务代理组件,所述方法还包括:建立第一服务代理组件和第二服务代理组件的连接;
控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据,包括:
控制所述第一窗口管理器向所述第一服务代理组件发送所述拖拽数据;
控制所述第一服务代理组件向所述第二服务代理组件发送所述拖拽数据;
控制所述第二服务代理组件向所述第二窗口管理器发送所述拖拽数据;
控制所述第二窗口管理器根据所述拖拽数据包括的窗口标识,向所述第二APP发送所述拖拽数据。
可选的,在通过内存副本携带所述目标对象的内容的情况下,则在获取所述目标对象之前,还包括:
将所述目标对象的内容读入内存中。
可选的,所述拖拽数据还包括:所述目标对象在所述第二APP对应的窗口内的位置信息,所述根据所述窗口标识,在所述第二APP对应的窗口内显示所述目标图标,包括:
确定所述窗口标识对应的第二APP;
根据所述目标对象在所述第二APP对应的窗口内的位置信息,在所述第二APP对应的窗口内显示所述目标图标。
可选的,所述控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据之前,还包括:
根据所述第二APP的窗口状态,确定所述第二APP的窗口是否处于激活状态;
在第二APP的窗口处于激活状态的情况下,则执行控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据的操作。
可选的,所述方法还包括:
响应于用户对所述第一APP内的目标对象的拖拽操作,显示拖拽效果视图;所述拖拽效果视图包括以下至少一项:所述目标对象的高亮效果、阴影效果、虚化效果或重叠效果。
可选的,所述接收到所述用户对所述目标对象的拖拽释放操作之前,还包括:
控制所述第一窗口管理器向所述第二窗口管理器发送拖拽请求;所述拖拽请求包括:所述目标对象的元数据和所述第二操作系统的第二APP的窗口标识;
根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作,包括:
根据所述目标对象的元数据,确定所述目标对象是否与所述第二APP匹配;
在所述目标对象与所述第二APP匹配的情况下,根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作。
本发明实施例还提供一种对象拖拽装置,应用于电子设备,所述电子设备运行第一操作系统和以容器化运行在第一操作系统中的第二操作系统第一操作系统包括第一应用程序APP,第二操作系统包括第二APP,所述对象拖拽装置,包括:
处理模块,用于建立第一操作系统与第二操作系统的连接;
获取模块,用于响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;
所述处理模块,还用于在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;
所述处理模块,还用于根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述对象拖拽方法的步骤。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述对象拖拽方法的步骤。
本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述对象拖拽方法的步骤。
本发明实施例提供的对象拖拽方法、设备、存储介质和程序,用户对第一操作系统下第一APP内的目标对象进行拖拽操作时,响应于用户的该拖拽操作,获取该拖拽操作对应的位置信息;基于该位置信息确定目标对象所处的位置是否属于第二操作系统下第二APP的窗口,在属于第二APP的窗口,且接收到用户对目标对象的拖拽释放操作的情况下,控制第一APP向第二APP发送目标对象的拖拽数据,使得第二APP获取到该目标对象的拖拽数据,进而根据拖拽数据,在第二APP内执行对该目标对象的目标操作,实现了不同系统下APP之间的对象传递,用户只进行了拖拽操作和拖拽释放操作,操作较为简便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的对象拖拽方法一实施例的流程示意图;
图2是本发明实施例提供的显示界面示意图之一;
图3a是本发明实施例提供的显示界面示意图之二;
图3b是本发明实施例提供的显示界面示意图之三;
图3c是本发明实施例提供的显示界面示意图之四;
图4是本发明实施例提供的显示界面示意图之五;
图5是本发明实施例提供的电子设备内部交互流程示意图之一;
图6是本发明实施例提供的电子设备内部交互流程示意图之二;
图7是本发明实施例提供的电子设备内部交互流程示意图之三;
图8是本发明提供的对象拖拽装置的结构示意图;
图9是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
首先,对本发明实施例涉及的部分词汇和应用场景进行介绍。
本发明实施例的方法可以应用于电子设备,在一实施例中该电子设备中设置有至少两个系统,例如第一操作系统和第二操作系统,第二操作系统以容器化的方式运行在第一操作系统中。如本领域技术人员所知,容器化即以Linux内核特性为基础实现的LXC,其充分利用了cgroups 和 Namespace特性,隔离进程和资源,使得第二操作系统高效、轻量的实现。
在本发明的实施例中,尽管没有明确描述的,第一操作系统和第二操作系统可以是相同的,例如第一操作系统和第二操作系统均为Linux或均为Android;第一操作系统和第二操作系统也可以是不同的,例如第一操作系统和第二操作系统中一者为Linux,一者为Android。
在本发明的实施例中,应用程序APP泛指在操作系统中具有一个或多个功能的应用,例如文件管理器、图片查看器、音乐播放器、视频播放器等。在跨系统的应用间拖拽数据,指的是将在第一APP中的目标对象直接拖拽到第二APP的界面中,而无需经过第二操作系统先通过复制的方式导入该目标对象然后再用第二APP打开,例如第一APP为文件管理器,其中的目标对象为某个图像,第二APP为图像查看器,将第一操作系统的文件管理器界面中的图像拖拽到第二操作系统的图像查看器中进行图像显示。
在相关技术中,跨系统的传递内容,通常是在第一操作系统的文件管理器界面中选中和复制目标对象,在第二操作系统的文件管理器界面中粘贴目标对象,然后再用与目标对象对应的APP打开。
本发明实施例提供的方法可由电子设备如处理器执行相应的软件代码实现,也可由电子设备在执行相应的软件代码的同时,通过和服务器进行数据交互来实现。
本发明实施例的对象拖拽方法的技术构思如下:
用户在第一操作系统中对目标对象进行拖拽操作,电子设备内部进行处理,在确定出目标对象移动到第二操作系统的APP的窗口内,且在接收到用户的拖拽释放操作,及拖拽结束指令后,直接在第二操作系统的APP执行对该目标对象的目标操作,例如在第二操作系统的APP上显示或播放目标对象,实现了跨系统的对象传递,用户操作简便,而且较为直观。
下面结合图1-图7以具体的实施例对本发明实施例的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明实施例提供的对象拖拽方法一实施例的流程示意图。如图1所示,本实施例提供的方法,应用于电子设备,电子设备中运行有第一操作系统和以容器化方式运行在第一操作系统中的第二操作系统,第一操作系统包括第一应用程序APP,第二操作系统包括第二应用程序APP,所述方法包括:
步骤101、建立第一操作系统与第二操作系统的连接;
步骤102、响应于用户对第一APP内的目标对象的拖拽操作,获取拖拽操作对应的位置信息。
具体的,为了实现第一操作系统和第二操作系统的数据交互,第一操作系统与第二操作系统需要建立连接。
用户对第一APP内的目标对象进行拖拽操作,电子设备响应该拖拽操作,获取该拖拽操作对应的位置信息,拖拽操作是一个持续的过程,随着用户对目标对象的移动,目标对象的位置会改变,位置信息例如包括该目标对象在该电子设备的显示界面中的位置坐标,可以通过系统中的窗口管理器持续的获得位置坐标。
其中,拖拽操作例如通过电子设备连接的输入设备(如鼠标、键盘等)实现,或用户对电子设备的触摸显示屏的操作实现等等,本发明实施例对此并不限定。
其中,目标对象例如包括:文件、文件夹、图像、视频(例如正在显示的图像或视频)、音乐或文本等。
例如,用户点击显示屏上的目标对象,并进行滑动操作。
如图2所示,图中示出了电子设备的显示界面,APP1和APP2分别为第一和第二操作系统中的APP,APP1的窗口中显示了文件夹1。
若用户想要将该文件夹1拖拽到APP2中,如图 3所示,用户手指点击或鼠标选中该文件夹1的图标,拖动该文件夹1的图标到APP2的窗口中。电子设备响应于用户对APP1内的文件夹1的拖拽操作,获取拖拽操作对应的位置信息,即文件夹1在移动过程中的位置信息。
在一实施例中,第一操作系统与第二操作系统的连接包括套接字接口Socket连接。
步骤103、在位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到用户对目标对象的拖拽释放操作的情况下,控制第一APP向第二APP发送目标对象的拖拽数据。
具体的,若用户将目标对象移动到第二操作系统下第二APP的窗口内,且用户执行拖拽释放操作,例如用户抬起按压的手指或鼠标按键,从而完成拖拽过程。
其中,拖拽释放操作例如通过电子设备连接的输入设备(如鼠标、键盘等)实现,或用户对电子设备的触摸显示屏的操作实现等等,本发明实施例对此并不限定。
电子设备收到拖拽完成的指示后,即收到拖拽释放操作后,向第二APP发送目标对象的拖拽数据,第二APP获取到该目标对象的拖拽数据后才能在该第二APP内执行该对目标对象的目标操作。
如图3a所示,在APP2内对文件夹1进行显示,即在APP2的显示窗口内显示文件夹1的图标。
根据窗口管理器给出的窗口属性,可以区分当前位置对应的APP是哪个操作系统下的APP。
例如,窗口管理器根据第一和第二APP的信息可以判断窗口属性以区分当前位置对应的APP是哪个操作系统下的APP。
步骤104、根据拖拽数据,在第二APP对应的窗口内执行对目标对象的目标操作。
具体的,第二APP获取到拖拽数据后,根据拖拽数据,在第二APP对应的窗口内执行对目标对象的目标操作,拖拽数据例如可以包括该目标对象的内容数据、第二APP的窗口标识或存储路径等。例如还可以包括目标对象的图标样式、尺寸等。目标操作例如包括以下至少一项:存储、显示、播放、在地图APP中查找地址并显示等操作。
例如,如图3a所示,在APP2的窗口中显示该文件夹1的图标。
图3a中只需要用户在电子设备的显示界面上对目标对象的位置进行移动,在用户对目标对象的移动过程中不影响第一APP和第二APP的窗口显示,操作较为简便,直观性较强。
例如,从APP1中拖拽一段文本,如地址,在APP2的窗口中显示该地址的位置,APP2为地图APP。
如图3b所示,从APP1中拖拽一个图像文件,在APP2的窗口中显示该图像。APP2例如为图像查看器。若APP2为文件管理器,则直接保存在APP2中,在APP2的窗口中显示该图像文件的图标,如图3b中左侧显示的图标。
如图3c所示,从APP1中拖拽一个音乐文件,在APP2的窗口中播放该音乐文件,APP2例如为音乐播放器,在该APP2的窗口中显示播放图标。
本实施例的方法,用户对目标对象进行拖拽操作,电子设备内部确定目标对象的位置,在确定出目标对象移动到其他系统的APP的窗口内,且在接收到用户的拖拽释放操作,即拖拽结束指令后,直接在其他系统的APP上执行对该目标对象的目标操作,实现了跨系统的对象传递,用户操作简便。
在一实施例中,步骤104可以通过如下方式实现:
控制第二APP根据拖拽数据获取目标对象;在第二APP内执行对目标对象的目标操作;或,
根据拖拽数据包括的目标对象的内容,在第二APP内执行对目标对象的目标操作。
具体的,拖拽数据中可以包括目标对象的相应数据,例如包括目标对象的内容、存储路径、或目标对象的元数据等,其中元数据中例如包括数据类型信息等等,拖拽数据还可以包括目标APP(即第二APP)的相关信息,若拖拽数据中不包括目标对象的内容,则基于拖拽数据中的其他信息获取到目标对象,目标对象例如为图像,如果拖拽数据中不包括该图像的内容,例如包括图像的存储地址,则基于该存储地址获取到图像。进一步,在第二APP内执行对目标对象的目标操作。
若拖拽数据中包括目标对象的内容,则直接在第二APP内执行对目标对象的目标操作。
可选的,步骤104之后还可以包括:
根据拖拽数据包括的第二APP的窗口标识,在第二APP对应的窗口内显示目标图标,该目标图标是基于拖拽数据生成的。
具体的,根据拖拽数据包括的第二APP的窗口标识,确定第二APP对应的窗口,并在第二APP对应的窗口内显示目标图标,例如如图3a所示,显示文件夹的图标(即与第一APP中显示的图标相同),如图3c所示,显示播放控件的图标,或,例如在地图APP中还可以显示用于标识某个地址所在位置的图标。
上述实施方式中,用户对目标对象进行拖拽操作,电子设备内部确定目标对象的位置,在确定出目标对象移动到其他系统的APP的窗口内,且在接收到用户的拖拽释放操作,即拖拽结束指令后,控制第二APP根据拖拽数据获取目标对象;根据拖拽数据包括的第二APP的窗口标识,在第二APP对应的窗口内显示目标图标,实现了跨系统的对象传递,用户操作简便,而且较为直观。
在其他实施方式中,获取目标对象可以通过如下几种方式实现:
例如,拖拽数据包括目标对象的存储路径,控制第二APP根据存储路径获取目标对象。
具体的,为了减少传输的数据量,提高传输效率,拖拽数据中还可以包括目标对象的存储路径,则第二APP可以直接从存储路径下获取到该目标对象。
例如,目标对象为文件,存储路径可以通过文件的文件描述符携带,第二APP接收到该文件描述符后,对文件内容直接进行读取,可以提高传输效率。
上述实施方式中,根据存储路径获取目标对象,可以提高传输效率。
例如,拖拽数据包括目标对象所占共享内存的访问标识,控制第二APP根据目标对象的该访问标识,从共享内存获取目标对象。
具体的,拖拽数据中可以包括目标对象的所占共享内存的访问标识,控制第二APP根据目标对象的所占共享内存的访问标识,从该共享内存中获取目标对象,例如。
上述实施方式中,通过发送目标对象的文件描述符,实现了内容的传递,而且传输效率较高。
例如,拖拽数据包括目标对象的文件描述符的情况下,控制第二APP根据文件描述符获取目标对象。
具体的,拖拽数据中可以包括目标对象的文件描述符,例如该目标对象为文件,在对目标对象进行拖拽操作之前,在内核中打开该目标对象,内核会返回相应的文件描述符,此时不占内存,向第二APP传递该文件描述符,第二APP根据该文件描述符获取该目标对象的内容。
上述实施方式中,通过发送目标对象所占共享内存的访问标识,实现了内容的传递,而且传输效率较高。
可选的,若通过内存副本携带目标对象的内容,则在向第二APP发送目标对象的拖拽数据之前,还包括:
将目标对象的内容读入内存中。
具体的,为了实现高效率的传输显示,可以通过内存副本携带目标对象的内容,在向第二APP发送所述目标对象的拖拽数据之前可以将目标对象的内容读入内存中,进而直接向第二APP发送内存副本,该内存副本携带该目标对象的内容。
上述实施方式中,通过发送目标对象的内容,实现了内容的传递。进一步,还可以通过读入内存,提高效率。
在一实施例中,拖拽数据还包括:目标对象在第二APP对应的窗口内的位置信息,根据窗口标识,在第二APP对应的窗口内显示目标图标,可以通过如下方式实现:
确定窗口标识对应的第二APP;
根据目标对象在所述第二APP对应的窗口内的位置信息,在第二APP对应的窗口内显示目标图标。
具体的,首先确定移动后的目标对象所在的第二APP,即确定窗口标识对应的第二APP,进而根据目标对象在第二APP对应的窗口内的位置信息,即接收到用户的拖拽释放操作时目标对象所处的位置,在第二APP对应的窗口内显示该目标图标。
如图3a所示,用户手指在APP2的左上角抬起,则文件夹1在APP2对应的窗口内的位置为左上角,即将文件夹1的图标显示在APP2对应的窗口内的左上角。
在一实施例中,步骤102之前,还可以进行如下操作:
根据第二APP的窗口状态,确定第二APP的窗口是否处于激活状态;
在第二APP的窗口处于激活状态的情况下,执行步骤102的操作。
具体的,在向第二APP发送数据之前,可以先判断该第二APP的窗口状态是激活状态或者非激活状态,若是激活状态则进行后续操作;若是非激活状态可以先将该第二APP的窗口激活,再执行该步骤102。
在其他实施例中,执行步骤102的操作时,第二APP的窗口也可以处于非激活状态。
在一实施例中,该对象拖拽方法还可以包括如下步骤:
响应于用户对第一APP内的目标对象的拖拽操作,显示拖拽效果视图;所述拖拽效果视图包括以下至少一项:目标对象的高亮效果、阴影效果、虚化效果或重叠效果。
具体的,如图4所示,图中显示了两个操作系统的APP窗口,APP1表示第一操作系统的APP窗口,APP2表示第二操作系统的APP窗口,图4中示出了用户手指选中要执行拖拽操作的目标对象后产生的拖拽效果示图,图4中例如表示的是高亮效果。
上述实施方式中,用户对第一APP内的目标对象进行拖拽时,可以在显示界面上显示拖拽效果试图,例如高亮效果、阴影效果、虚化效果或重叠效果等,更加直观,用户可以清楚的看到已选中该目标对象,用户体验较高。
在一实施例中,步骤104之前,该方法还可以包括如下步骤:
根据目标对象的元数据,确定目标对象是否与第二APP匹配;
在所述目标对象与所述第二APP匹配的情况下,执行步骤104的操作。
具体的,目标对象的元数据metadata,例如包括数据类型信息,例如为文本、图像或文件等,例如从Linux的图像管理器拖拽一张图像到Android的音乐播放APP,电子设备会根据该目标对象的数据类型信息,判断是否匹配,若否则控制该音乐播放APP停止执行该拖拽事件。
在一实施例中,通过drag事件和drop事件实现对目标对象的拖拽操作和拖拽释放操作,在drag事件中带着目标对象的元数据(包括数据类型信息)以区分目标对象的数据类型(是文本或者图像或者文件等)。在执行drop事件的时候,第二APP的接口会获取drag事件的操作入参,根据此判断drop事件对应的具体操作。当drag事件中携带的目标对象的数据类型信息与第二操作系统的APP2不匹配时,例如向Linux的图像管理器拖拽一张图像到Android的音乐播放APP,音乐播放APP会根据drag事件中的数据类型信息判断后丢弃该drag事件。
上述实施方式中,通过确定目标对象是否与第二APP匹配,若不匹配,则不需要执行后续操作,可以节省该设备的操作过程,避免不必要的操作。
在一实施例中,第一操作系统包括:第一窗口管理器,所述第二操作系统包括:第二窗口管理器,接收用户对目标对象的拖拽操作之后,所述方法还包括如下步骤:
控制第一窗口管理器向第二窗口管理器发送拖拽请求;拖拽请求包括:目标对象的元数据和第二操作系统的第二APP的窗口标识。
具体的,如图5所示,第一操作系统包括第一窗口管理器,第二操作系统包括第二窗口管理器,电子设备内部可以通过第一窗口管理器,第二窗口管理器之间的socket连接,实现第一操作系统和第二操作系统之间的交互,在接收到用户对目标对象的拖拽操作之后,第一窗口管理器向第二窗口管理器发送拖拽请求,第二窗口管理器根据拖拽请求包括的窗口标识,向第二APP发送拖拽请求,即第二窗口管理器根据窗口标识,查找到对应的第二APP,向该第二APP发送拖拽请求。
其中,窗口管理器可以调用第二APP的处理接口(如拖拽响应接口),然后将目标对象的拖拽数据作为参数传递给第二APP,后续处理流程由第二APP来决定。
第二APP还可以根据目标对象的元数据包括的数据类型信息,确定该目标对象是否与第二APP匹配,若不匹配,则丢弃;若匹配则进行后续处理。在一实施例中,步骤103可以通过如下方式实现:
控制第一窗口管理器向第二窗口管理器发送拖拽数据;
控制第二窗口管理器根据拖拽数据包括的窗口标识,向第二APP发送拖拽数据。
具体的,如图5所示,第一操作系统包括第一窗口管理器,第二操作系统包括第二窗口管理器,电子设备内部可以通过第一窗口管理器,第二窗口管理器之间的交互实现将第一操作系统的数据发送到第二操作系统,第一窗口管理器向第二窗口管理器发送拖拽数据,第二窗口管理器根据拖拽数据包括的窗口标识,向第二APP发送拖拽数据,即第二窗口管理器根据窗口标识ID,查找到对应的第二APP,向该第二APP发送拖拽数据。
在一实施例中,第一操作系统包括:第一窗口管理器、第一服务代理组件,第二操作系统包括:第二窗口管理器、第二服务代理组件,第一服务代理组件和第二服务代理组件之间建立socket连接,发送拖拽请求可以通过如下方式:
控制所述第一窗口管理器向所述第一服务代理组件发送拖拽请求;
控制所述第一服务代理组件向所述第二服务代理组件发送拖拽请求;
控制所述第二服务代理组件向所述第二窗口管理器发送拖拽请求。
具体的,如图6所示,第一操作系统包括第一窗口管理器和第一服务代理组件,第二操作系统包括第二窗口管理器和第二服务代理组件,电子设备内部可以通过第一窗口管理器、第一服务代理组件、第二服务代理组件和第二窗口管理器之间的交互,实现第一操作系统与第二操作系统的数据交互,第一窗口管理器向第一服务代理组件发送拖拽请求,第一服务代理组件向第二服务代理组件发送拖拽请求,第二服务代理组件向第二窗口管理器发送拖拽请求,第二窗口管理器根据拖拽请求包括的窗口标识ID,向第二APP发送拖拽请求,即第二窗口管理器根据窗口标识,查找到对应的第二APP,向该第二APP发送拖拽请求。
在一实施例中,控制第一窗口管理器向第二窗口管理器发送拖拽数据,包括:
控制第一窗口管理器向第一服务代理组件发送拖拽数据;
控制第一服务代理组件向第二服务代理组件发送拖拽数据;
控制第二服务代理组件向第二窗口管理器发送拖拽数据;
控制所述第二窗口管理器根据所述拖拽数据包括的窗口标识,向所述第二APP发送所述拖拽数据。
具体的,如图6所示,第一操作系统包括第一窗口管理器和第一服务代理组件,第二操作系统包括第二窗口管理器和第二服务代理组件,电子设备内部可以通过第一窗口管理器、第一服务代理组件、第二服务代理组件和第二窗口管理器之间的交互实现将第一操作系统的数据发送到第二操作系统,第一窗口管理器向第一服务代理组件发送拖拽数据,第一服务代理组件向第二服务代理组件发送拖拽数据,第二服务代理组件向第二窗口管理器发送拖拽数据,第二窗口管理器根据拖拽数据包括的窗口标识ID,向第二APP发送拖拽数据,即第二窗口管理器根据窗口标识,查找到对应的第二APP,向该第二APP发送拖拽数据。
上述实施方式中,通过电子设备内部的第一操作系统和第二操作系统之间的交互,即第一操作系统的第一APP、第一窗口管理器、第一服务代理组件、第二服务代理组件、第二窗口管理器和第二APP之间的交互实现了不同系统的APP之间的内容传递,实现过程简单,用户操作简便,拖拽过程较为直观。
图7显示了从第一APP到第二APP实现目标对象的传递,其中,第一APP例如为Linux上的APP,第二APP例如为Android的APP,该实施例中例如可以通过drag事件、drop事件实现拖拽过程。
其中,drag事件指的是对目标对象的拖拽操作,在drag事件中带着目标对象的元数据(包括数据类型信息)以区分drag的数据类型(是文字或者图像或者文件)。执行drop事件(对目标对象的放置操作)时,第二APP的接口会获取drag事件的操作入参,根据此判断drop事件的具体操作。当drag事件携带的数据类型与第二APP不匹配时,例如向Linux的图像管理器拖拽一张图像到Android的音乐播放APP,该音乐播放APP会根据drag事件中的信息判断后丢弃该drag事件。
图7中的步骤与图5和图6中类似,其实现原理参见图5和图6实施例,此次不再赘述。
其中,在转发drag事件前,首先判断对应窗口的状态是激活状态或者非激活状态,可以针对激活的窗口进行后续操作,也可以针对非激活的窗口进行后续操作。在drag事件的持续过程中,可以根据窗口管理器给出的窗口属性,确定当前的APP是安卓APP或LinuxAPP。
其中,图7中每个步骤的“转发”操作,可以通过socket连接实现。
下面对本发明实施例提供的对象拖拽装置进行描述,下文描述的对象拖拽装置与上文描述的对象拖拽方法可相互对应参照。
图8是本发明提供的对象拖拽装置的结构示意图。本实施例提供的对象拖拽装置,应用于电子设备,所述电子设备运行第一操作系统和以容器化运行在第一操作系统中的第二操作系统,第一操作系统包括第一应用程序APP,第二操作系统包括第二APP,所述对象拖拽装置,包括:
处理模块220,用于建立第一操作系统与第二操作系统的连接;
获取模块210,用于响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;
处理模块220,用于在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,则控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;
所述处理模块220,还用于根据所述拖拽数据,在所述第二APP内执行对所述目标对象的目标操作。
可选的,所述处理模块220,具体用于:
控制所述第二APP根据所述拖拽数据获取所述目标对象;在所述第二APP内执行对所述目标对象的目标操作;或,
根据所述拖拽数据包括的目标对象的内容在所述第二APP内执行对所述目标对象的目标操作;
所述装置还包括显示模块(图中未示出)用于:根据所述拖拽数据包括的第二APP的窗口标识,在所述第二APP对应的窗口内显示所述目标图标,所述目标图标是基于所述拖拽数据生成的。
可选的,所述处理模块220,具体用于:
在所述拖拽数据包括所述目标对象的存储路径的情况下,控制所述第二APP根据所述存储路径获取所述目标对象;或,
在所述拖拽数据包括所述目标对象所占共享内存的访问标识的情况下,控制所述第二APP根据所述访问标识从所述共享内存中获取所述目标对象;或,
在所述拖拽数据包括所述目标对象的文件描述符的情况下,控制所述第二APP根据所述文件描述符获取所述目标对象。
可选的,所述第一操作系统包括:第一窗口管理器,所述第二操作系统包括:第二窗口管理器,所述处理模块220,具体用于:
控制所述第一窗口管理器向所述第二窗口管理器发送所述拖拽数据;
控制所述第二窗口管理器根据所述拖拽数据包括的窗口标识,向所述第二APP发送所述拖拽数据。
可选的,所述第一操作系统包括第一窗口管理器、第一服务代理组件,所述第二操作系统包括第二窗口管理器、第二服务代理组件,所述处理模块220还用于:
建立第一服务代理组件和第二服务代理组件的连接;
所述处理模块220,具体用于:控制所述第一窗口管理器向所述第一服务代理组件发送所述拖拽数据;
控制所述第一服务代理组件向所述第二服务代理组件发送所述拖拽数据;
控制所述第二服务代理组件向所述第二窗口管理器发送所述拖拽数据;
控制所述第二窗口管理器根据所述拖拽数据包括的窗口标识,向所述第二APP发送所述拖拽数据。
可选的,若通过内存副本携带所述目标对象的内容,则所述处理模块220还用于:
将所述目标对象的内容读入内存中。
可选的,所述拖拽数据还包括:所述目标对象在所述第二APP对应的窗口内的位置信息,所述处理模块220,具体用于:
确定所述窗口标识对应的第二APP;
根据所述目标对象在所述第二APP对应的窗口内的位置信息,在所述第二APP对应的窗口内显示所述目标图标。
可选的,所述处理模块220,具体用于:
根据所述第二APP的窗口状态,确定所述第二APP的窗口是否处于激活状态;
若是,则执行控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据的操作。
可选的,所述处理模块220,还用于:
响应于用户对所述第一APP内的目标对象的拖拽操作,显示拖拽效果视图;所述拖拽效果视图包括以下至少一项:所述目标对象的高亮效果、阴影效果、虚化效果或重叠效果。
可选的,所述处理模块220还用于:
控制所述第一窗口管理器向所述第二窗口管理器发送拖拽请求;所述拖拽请求包括:所述目标对象的元数据和所述第二操作系统的第二APP的窗口标识。
可选的,所述处理模块220还用于:
根据所述目标对象的元数据,确定所述目标对象是否与所述第二APP匹配;
若是,则执行根据所述拖拽数据,在所述第二APP内执行对所述目标对象的目标操作。
本发明实施例的装置,其用于执行前述任一方法实施例中的方法,其实现原理和技术效果类似,此次不再赘述。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行对象拖拽方法,该方法包括:
建立第一操作系统与第二操作系统的连接;
响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;
在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;
根据所述拖拽数据,在所述第二APP内执行对所述目标对象的目标操作。
其中,电子设备运行第一操作系统和以容器化运行在第一操作系统中的第二操作系统,第一操作系统包括第一APP,第二操作系统包括第二APP。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的对象拖拽方法,该方法包括:
建立第一操作系统与第二操作系统的连接;响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作。
又一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的对象拖拽方法,该方法包括:
建立第一操作系统与第二操作系统的连接;响应于用户对第一APP内的目标对象的拖拽操作,获取所述拖拽操作对应的位置信息;在所述位置信息对应的APP窗口属于第二操作系统下第二APP的窗口,且接收到所述用户对所述目标对象的拖拽释放操作的情况下,控制所述第一APP向所述第二APP发送所述目标对象的拖拽数据;根据所述拖拽数据,在所述第二APP对应的窗口内执行对所述目标对象的目标操作。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。