CN113204307A - 一种在Linux上兼容运行Android系统的文件发送方法及装置 - Google Patents
一种在Linux上兼容运行Android系统的文件发送方法及装置 Download PDFInfo
- Publication number
- CN113204307A CN113204307A CN202110490076.7A CN202110490076A CN113204307A CN 113204307 A CN113204307 A CN 113204307A CN 202110490076 A CN202110490076 A CN 202110490076A CN 113204307 A CN113204307 A CN 113204307A
- Authority
- CN
- China
- Prior art keywords
- file
- android
- linux
- window
- android application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000003993 interaction Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 7
- 238000002955 isolation Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种在Linux上兼容运行Android系统的文件发送方法及装置,在Linux上兼容运行Android系统的运行环境下,Android应用显示窗口检测到Linux的鼠标拖拽事件后分析鼠标拖拽事件,分析拖拽的文件类型是否支持,如果支持,则将将拖拽的文件复制到Android内部存储,再由linux侧将文件路径和Android应用名发送给Android侧,将文件路径写入Android系统媒体库,调用分享接口将文件分享出去。只需要拖拽动作即可发送分享文件,支持多文件拖拽发送,支持在活跃窗口或者非活跃窗口上拖拽发送文件。
Description
技术领域
本发明涉及计算机操作系统领域,尤其涉及一种在Linux上兼容运行Android系统的文件发送方法及装置。
背景技术
由于Android应用生态已经成为当今世界上最大的应用生态,因此跨平台运行Android应用已经成为一种行业的趋势。众所周知,Linux桌面操作系统一直以来最大的问题就是应用生态缺乏的问题,这也导致了Linux桌面系统无法成为主流的桌面操作系统的原因,因此把Android应用兼容运行在Linux桌面系统之上也越来越被大众所接受。
Linux操作系统兼容Android环境(下文简称Linux-Android兼容环境)是一种在Linux操作系统上运行Android应用(App)的技术,对丰富Linux操作系统应用生态有着重要的意义。Linux-Android兼容环境一般由Host端和Guest端组成,Host端运行于Linux系统上,主要包括Android容器和用户交互窗口,Android容器的作用是从Linux系统中隔离出部分内核资源来支撑Guest端运行,Guest端主要包括特殊定制的Android应用框架和Android运行时库等,Android应用都运行在Guest端。
用户在Linux-Android兼容环境中运行使用Android应用时,通常都有加载和分享Linux系统下文件的需求,例如:用户使用微信或QQ App时需要将某个或者多个Linux系统下的文件一次性发送给自己的好友。但是,由于容器的隔离作用,Android应用无法直接访问Linux系统下的文件,现有技术实现Android应用加载Host端的文件的方案:
将Linux文件通过拖拽的方式,传递文件路径给当前活跃的Android应用。通过感知鼠标拖拽行为获取文件的Host端路径,模拟鼠标点击Android应用中操作按钮的行为完成文件的自动加载。该方案主要存在两个缺点:一是拖拽到的窗口必须是当前活跃的Android应用。如果非活跃窗口,功能将失效。二是使用了模拟鼠标点击的方式来完成Linux文件的加载,如果应用更新导致页面布局改变,模拟鼠标点击的位置不准确,将会点击到非用户行为的位置,带来一定的风险。例如:之前配置的点击位置是加载文件,应用更新后,此坐标位置改成了视频通话,则用户在使用此功能时,不是加载文件功能,而是使用了视频通话功能。由于不同应用鼠标点击的位置不一样,需要对各个应用进行配置,开发和维护起来较为繁琐。
综上所述,现有的解决方案中,虽然使用了拖拽文件加模拟鼠标的方式做到了加载Linux文件,但是此功能需要在Android当前活跃的窗口才能生效,且开发和维护起来比较繁琐,应用更新会对用户带来较大的风险。
发明内容
为了解决在Linux兼容Android环境中,由于容器docker的隔离作用,Android应用无法将Linux下的文件发送分享,以及不论需要分享发送文件的Android应用窗口是当前活跃的应用还是非活跃的应用都能加载和分享Linux系统中的文件的问题,本发明提供了一种在Linux上兼容运行Android系统的文件发送方法及装置。
一方面,本发明提供一种在Linux上兼容运行Android系统的文件发送方法,所述方法应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示,所述方法包括如下步骤:
步骤S1:鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window并释放;
步骤S2:检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;
步骤S3:检测和获取鼠标释放事件消息;
步骤S4:分析步骤S2、S3获取到的拖拽和释放事件消息,获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
步骤S5:检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
步骤S6:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;
步骤S7:Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
步骤S8:Android侧用于与Linux交互的组件jd-app-service获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
进一步地,在步骤S1之前,所述方法还包括:
在Linux上启动Android应用,Android侧用于与Linux交互的组件jd-app-service通过socket发送包含所述Android应用的名称的启动应用消息给Linux侧用于与Android侧进行通信的组件jd-app-manager,Linux侧用于与Android侧进行通信的组件jd-app-manager接收到消息后,启动一个Android应用显示窗口jd-display-window程序并显示所述Android应用的界面,将所述Android应用名称设置到Android应用显示窗口jd-display-window的m_package_name变量中,所述jd-display-window程序用于显示Android应用的界面。
进一步地,所述步骤S4中获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:
当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
进一步地,所述步骤S5中将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
进一步地,所述步骤S8中所述Android应用的分享接口根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方。
另一方面,本发明提供一种在Linux上兼容运行Android系统的文件发送装置,所述装置应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示,所述装置包括:
鼠标拖拽和释放事件检测模块,用于当鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window,检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;当鼠标释放后,检测和获取鼠标释放事件消息;
获取文件路径和Android应用名称模块,用于获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
挂载复制文件模块,用于检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
文件消息交互模块,用于:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
文件发送模块,用于:Android侧用于与Linux交互的组件获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
进一步地,所述获取文件路径和Android应用名称模块获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
进一步地,所述挂载复制文件模块将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
进一步地,所述文件发送模块根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方。
本发明与现有技术相比,具有以下优点:
1.用户只需要拖拽文件即可发送分享文件,其他的操作都是无感知的;
2.本发明支持多文件拖拽和分享发送;
3.本发明不需要额外配置,且支持任何对外提供分享接口的应用;
4.本发明支持活跃窗口或者非活跃窗口的操作;
5.本发明支持在应用的任一界面调用应用的分享界面。
附图说明
图1是本发明实施例提供的一种在Linux上兼容运行Android系统的文件发送方法示意图;
图2是本发明实施例提供的一种在Linux上兼容运行Android系统的文件发送装置组成示意图;
图3是本发明实施例提供的Linux兼容运行Android从Linux侧拖拽文件到飞书发送的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
对于在Linux操作系统上兼容运行Android的运行环境来说,Android运行环境是运行在容器中的。
容器是近些年由Linux内核支持的一种轻量级虚拟技术。通过容器技术可以在Linux系统运行一个新的Linux系统(包括其他基于Linux系统定制的系统,如Android),容器使得客户机系统和主机系统相互隔离。与传统的基于虚拟机技术的方案不同,在容器技术中,客户系统与主机系统共享CPU、内存、存储等资源,资源开销很低。此外,通过适当的配置,还能使客户系统直接访问主机的硬件资源,进一步提升客户系统的性能。
由于容器docker的隔离作用,Linux无法访问Android的内部存储目录,Linux上的Android应用无法直接访问Linux侧文件。
图1是本发明实施例提供的一种在Linux上兼容运行Android系统的文件发送方法示意图;所述方法应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示。在Linux上启动Android应用,Android侧用于与Linux交互的组件jd-app-service通过socket发送包含所述Android应用的名称的启动应用消息给Linux侧用于与Android侧进行通信的组件jd-app-manager,Linux侧用于与Android侧进行通信的组件jd-app-manager接收到消息后,启动一个Android应用显示窗口jd-display-window程序并显示所述Android应用的界面,将所述Android应用名称设置到Android应用显示窗口jd-display-window的m_package_name变量中,所述jd-display-window程序用于显示Android应用的界面。
所述方法包括如下步骤:
步骤S1:鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window并释放;
Android应用显示窗口jd-display-window是一个通过QT(QT是一个跨平台的C++应用和UI开发库)实现的窗口程序,主要通过QT的QWindow类和QWidget类实现。无论Android应用显示窗口jd-display-window是否是当前活跃的窗口,是否显示在最顶层,都能检测到鼠标拖拽事件。
步骤S2:检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;
对于QWindow类,通过重写event函数来获取拖拽事件,即bool event(QEvent*e);event函数能获取到QWindow的事件消息,包括:按键按下事件,按键松开事件,窗口失去焦点事件,窗口获取焦点事件,鼠标按下事件,鼠标松开事件等等,主要通过e->type()接口来区分。当e->type()等于QEvent::DragEnter时,即为拖拽事件。
对于QWidget类,通过重写dragEnterEvent函数来获取拖拽事件,即voiddragEnterEvent(QDragEnterEvent*e);dragEnterEvent函数能获取到QWidget的鼠标拖拽消息。
步骤S3:检测和获取鼠标释放事件消息;
对于QWindow类,当e->type()等于QEvent::Drop时,即为鼠标拖拽后的释放事件。
对于QWidget类,通过重写dropEvent函数来获取拖拽事件,即void dropEvent(QDropEvent*event);dropEvent函数能获取到QWidget的鼠标拖拽后的释放事件。
步骤S4:分析步骤S2、S3获取到的拖拽和释放事件消息,获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
通过拖拽和释放事件获取拖待加载文件在Linux侧路径的方法如下:
对于QWindow类,event(QEvent*e)函数中,通过参数e->mimeData()->text()即能得到待加载文件的路径。对于QWidget类,dropEvent(QDropEvent*e)函数中,通过参数e->mimeData()->text()即能得到待加载文件的路径。
获取待加载文件在Linux侧路径是为了后续将该文件复制到Android内部存储,以便Android应用加载和分享该文件。
分析拖拽到的Android应用显示窗口jd-display-window的应用名的方法如下:
当Linux侧某个Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取该Android应用显示窗口jd-display-window的m_package_name变量即可获取到拖拽到的Android应用显示窗口display-window的应用名。
步骤S5:检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
由于容器docker的隔离作用,Linux无法访问Android的内部存储目录。在Linux下启动Android系统时,会启动一个挂载程序即fuse文件系统(用户文件系统),将Android内部存储目录(通常是docker镜像数据目录的子目录/data/media/0)挂载到Linux系统下的某个目录下,即挂载的目标目录。这样Linux程序就能访问Android的内部存储目录。将待加载的Linux文件复制到挂载的目标目录,Android内部存储目录就存在待加载的Linux文件。
本发明支持多个文件的加载,不支持文件夹、快捷方式以及没有读取权限的文件(Linux系统下需要root权限才能读取的文件)的加载。如果待加载的文件不支持被Android应用加载,则提示“文件类型不支持”。
具体检测过程为:通过shell中if[-e/d/h.....]指令读取文件信息。
if[-h\"$path\"]表示path路径下的文件类型为Linux软链接;if[-d\"$path\"]表示path路径下的文件类型为文件夹。通过shell中的ls-al指令读取文件的权限信息,if[$(ls-lh\"$path\"|cut-c 8)='r']表示path路径下的文件普通用户有读取权限。
文件类型不支持的原因:
1)文件夹:Android应用不支持文件夹的加载和分享。
2)快捷方式(Linux软链接):
Linux软链接,类似于windows系统的快捷方式。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间。Linux软链接必须和被指向的原文件同时存在,不能单独存在,但若被指向的原文件被删除,则相关软链接被称为死链接(即dangling link),软链接也会失效。如果用户将Linux系统中的快捷方式拖拽到Android应用显示窗口jd-display-window,通过Android应用加载和分享给其他用户,其他用户仅仅接收到快捷方式,没有接收到被指向的原文件,快捷方式会失效。所以不支持这类文件的加载和分享。
3)没有读取权限的文件(Linux系统下需要root权限才能读取的文件):
Linux系统下部分文件是系统文件,需要root权限才能读取。如果将这部分文件拖拽到Android应用显示窗口jd-display-window,Android应用没有读取这些文件的权限,所以不支持这类文件的加载和分享。
步骤S6:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;
步骤S7:Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
安卓系统通过系统媒体进程(安卓系统自带的一个进程)统一管理设备上所有的多媒体文件,系统中的每一个文件都在系统媒体数据库中有唯一的标识符,通过这个唯一标识符就可以获取到这个文件。
步骤S8:Android侧用于与Linux交互的组件jd-app-service获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
进一步地,所述步骤S4中获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:
当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
进一步地,所述步骤S5中将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
进一步地,所述步骤S8中所述Android应用的分享接口根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,比如微信的文件分享的好友选择列表界面或者是邮箱的上传附件界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方,比如在好友选择列表界面点击某个好友,就可以将此文件发送给这个好友,或者是邮箱应用可以上传这个附件到邮件编辑界面。
图2是本发明实施例提供的一种在Linux上兼容运行Android系统的文件发送装置组成示意图;所述装置应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示,所述装置包括:
鼠标拖拽和释放事件检测模块,用于当鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window,检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;当鼠标释放后,检测和获取鼠标释放事件消息;
获取文件路径和Android应用名称模块,用于获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
挂载复制文件模块,用于检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
文件消息交互模块,用于:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
文件发送模块,用于:Android侧用于与Linux交互的组件jd-app-service获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
进一步地,所述获取文件路径和Android应用名称模块获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
进一步地,所述挂载复制文件模块将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
进一步地,所述文件发送模块根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方。
图3是本发明实施例提供的Linux兼容运行Android从Linux侧拖拽文件到飞书发送的示意图。示意图界面为Linux系统上兼容运行Android的环境下,在Linux桌面上用户在使用Android应用QQ和飞书,拖拽文件前,飞书处于非活跃状态,QQ处于活跃状态(用户正在QQ上与好友聊天),用户将Linux侧的两个文件同时拖拽到飞书界面以便分享给好友。该界面说明本发明可以直接将Linux侧文件拖拽到非活跃窗口发送,不需要先激活非活跃窗口(比如通过点击非活跃窗口以激活应用)再拖拽文件才能发送分享文件。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种在Linux上兼容运行Android系统的文件发送方法,其特征在于,所述方法应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示,所述方法包括如下步骤:
步骤S1:鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window并释放;
步骤S2:检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;
步骤S3:检测和获取鼠标释放事件消息;
步骤S4:分析步骤S2、S3获取到的拖拽和释放事件消息,获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
步骤S5:检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
步骤S6:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;
步骤S7:Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
步骤S8:Android侧用于与Linux交互的组件jd-app-service获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
2.如权利要求1所述的在Linux上兼容运行Android系统的文件发送方法,其特征在于,在步骤S1之前,所述方法还包括:
在Linux上启动Android应用,Android侧用于与Linux交互的组件jd-app-service通过socket发送包含所述Android应用的名称的启动应用消息给Linux侧用于与Android侧进行通信的组件jd-app-manager,Linux侧用于与Android侧进行通信的组件jd-app-manager接收到消息后,启动一个Android应用显示窗口jd-display-window程序并显示所述Android应用的界面,将所述Android应用名称设置到Android应用显示窗口jd-display-window的m_package_name变量中,所述jd-display-window程序用于显示Android应用的界面。
3.如权利要求1所述的在Linux上兼容运行Android系统的文件发送方法,其特征在于,所述步骤S4中获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:
当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
4.如权利要求1所述的在Linux上兼容运行Android系统的文件发送方法,其特征在于,所述步骤S5中将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
5.如权利要求1所述的在Linux上兼容运行Android系统的文件发送方法,其特征在于,所述步骤S8中所述Android应用的分享接口根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方。
6.一种在Linux上兼容运行Android系统的文件发送装置,其特征在于,所述装置应用在Linux上兼容运行Android系统的运行环境下,Android应用通过Android应用显示窗口jd-display-window在Linux中显示,所述装置包括:
鼠标拖拽和释放事件检测模块,用于当鼠标拖拽Linux侧待加载的一个或多个文件至Android应用显示窗口jd-display-window,检测和获取鼠标拖拽事件消息,并将拖拽到达的Android应用显示窗口设置为活跃窗口;当鼠标释放后,检测和获取鼠标释放事件消息;
获取文件路径和Android应用名称模块,用于获取拖拽的待加载文件在Linux侧的路径与拖拽到达的Android应用显示窗口jd-display-window的应用名称;
挂载复制文件模块,用于检测待加载文件的类型是否支持被Android应用加载;若待加载的文件支持被Android应用加载,则将Android内部存储目录挂载到Linux系统的目录下,将待加载的Linux侧文件复制到Android的内部存储目录下;
文件消息交互模块,用于:Linux侧用于与Android进行通信的组件jd-app-manager将待加载文件所在的Android内部存储绝对路径以及待加载文件的Android应用的名称,通过socket发送给Android侧用于与Linux交互的组件jd-app-service;Android侧用于与Linux交互的组件jd-app-service接收socket消息,解析消息中待加载文件的Android内部存储绝对路径,将socket消息写入到Android的系统媒体数据库;
文件发送模块,用于:Android侧用于与Linux交互的组件获取待加载文件在Android系统中的统一资源标识符,将所述统一资源标识符发送到Android应用的分享接口,所述Android应用的分享接口根据统一资源标识符获取文件并发送,其中,所述统一资源标识符唯一标识文件。
7.如权利要求6所述的在Linux上兼容运行Android系统的文件发送装置,其特征在于,所述获取文件路径和Android应用名称模块获取拖拽到达的Android应用显示窗口jd-display-window的应用名称,具体为:当Linux侧Android应用显示窗口jd-display-window获取到鼠标拖拽和释放事件时,通过读取所述Android应用显示窗口jd-display-window的m_package_name变量获取鼠标拖拽到达的Android应用显示窗口jd-display-window的应用名称。
8.如权利要求6所述的在Linux上兼容运行Android系统的文件发送装置,其特征在于,所述挂载复制文件模块将Android内部存储目录挂载到Linux系统的目录下具体为:
在Linux上启动Android系统时,启动Linux侧的文件挂载程序,将Android内部存储目录挂载到Linux系统的目录下,所述Android内部存储目录为容器docker镜像数据目录的子目录/data/media/0。
9.如权利要求6所述的在Linux上兼容运行Android系统的文件发送装置,其特征在于,所述文件发送模块根据统一资源标识符获取文件并发送,具体为:
所述Android应用的分享接口查询Android系统中发送文件的组件,将待发送文件的统一资源标识符发送给所述发送文件的组件,所述发送文件的组件打开Android应用的文件发送界面并将待发送文件的统一资源标识符提供给文件发送界面,所述文件发送界面根据待发送文件的统一资源标识符获取待发送文件,将文件发送给接收方。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110490076.7A CN113204307A (zh) | 2021-05-06 | 2021-05-06 | 一种在Linux上兼容运行Android系统的文件发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110490076.7A CN113204307A (zh) | 2021-05-06 | 2021-05-06 | 一种在Linux上兼容运行Android系统的文件发送方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113204307A true CN113204307A (zh) | 2021-08-03 |
Family
ID=77030101
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110490076.7A Pending CN113204307A (zh) | 2021-05-06 | 2021-05-06 | 一种在Linux上兼容运行Android系统的文件发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113204307A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407086A (zh) * | 2021-08-20 | 2021-09-17 | 北京鲸鲮信息系统技术有限公司 | 对象拖拽方法、设备和存储介质 |
CN113641437A (zh) * | 2021-08-16 | 2021-11-12 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用界面旋转方法及装置 |
CN113641320A (zh) * | 2021-08-16 | 2021-11-12 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的共享屏幕方法及装置 |
CN113655940A (zh) * | 2021-08-24 | 2021-11-16 | 深圳技德应用技术有限公司 | 一种Linux兼容Android的模拟双指缩放方法及装置 |
CN113656196A (zh) * | 2021-08-16 | 2021-11-16 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用间传送文件方法及装置 |
CN113672407A (zh) * | 2021-08-24 | 2021-11-19 | 深圳技德终端技术有限公司 | 一种Linux兼容Android的键盘输入控制方法及装置 |
CN113778280A (zh) * | 2021-09-13 | 2021-12-10 | 北京技德系统技术有限公司 | 一种Linux兼容Android的显示消息通知方法及装置 |
CN113986858A (zh) * | 2021-12-24 | 2022-01-28 | 北京鲸鲮信息系统技术有限公司 | Linux兼容安卓系统的共享文件操作方法和装置 |
CN114035863A (zh) * | 2021-11-11 | 2022-02-11 | 北京鲸鲮信息系统技术有限公司 | 在Linux系统中操作安卓应用的方法、装置和设备 |
CN114185851A (zh) * | 2022-02-14 | 2022-03-15 | 麒麟软件有限公司 | 安卓访问Linux本地目录和文件的方法与系统 |
CN114201087A (zh) * | 2022-02-17 | 2022-03-18 | 北京麟卓信息科技有限公司 | 一种安卓应用图标在Linux任务栏的显示方法 |
CN114385305A (zh) * | 2022-03-23 | 2022-04-22 | 麒麟软件有限公司 | 一种录制Linux屏幕并分享给安卓应用的系统和方法 |
CN114385047A (zh) * | 2022-03-24 | 2022-04-22 | 北京麟卓信息科技有限公司 | Linux平台上基于Intent的安卓应用文件发送方法 |
CN114995716A (zh) * | 2022-08-02 | 2022-09-02 | 北京麟卓信息科技有限公司 | 一种桌面系统上安卓应用相关文件的操作方法 |
CN115292073A (zh) * | 2022-10-09 | 2022-11-04 | 北京麟卓信息科技有限公司 | 一种Linux平台上安卓应用文件的发送方法 |
CN115454296A (zh) * | 2022-11-11 | 2022-12-09 | 北京麟卓信息科技有限公司 | 一种跨运行环境的用户行为智能融合方法 |
CN115640154A (zh) * | 2022-12-23 | 2023-01-24 | 北京麟卓信息科技有限公司 | 一种基于轨迹智能预测的跨运行环境交互延迟优化方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260250A (zh) * | 2015-09-10 | 2016-01-20 | 烽火通信科技股份有限公司 | 一种Linux系统与Android系统的双系统通信装置 |
CN108062237A (zh) * | 2017-11-23 | 2018-05-22 | 上海博泰悦臻电子设备制造有限公司 | Linux系统和Android系统的兼容方法及系统、存储介质及车载终端 |
US20190087212A1 (en) * | 2016-08-10 | 2019-03-21 | Beijing Qihoo Technology Company Limited | Android simulator and method for implementing android simulator |
CN112068897A (zh) * | 2020-08-16 | 2020-12-11 | 北京麟卓信息科技有限公司 | 基于鼠键模拟的Android应用文件加载方法和装置 |
CN112269604A (zh) * | 2020-11-11 | 2021-01-26 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android应用的窗口交互方法及装置 |
CN112364607A (zh) * | 2020-10-08 | 2021-02-12 | 北京麟卓信息科技有限公司 | 一种Android应用编辑Linux文件的方法和装置 |
-
2021
- 2021-05-06 CN CN202110490076.7A patent/CN113204307A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260250A (zh) * | 2015-09-10 | 2016-01-20 | 烽火通信科技股份有限公司 | 一种Linux系统与Android系统的双系统通信装置 |
US20190087212A1 (en) * | 2016-08-10 | 2019-03-21 | Beijing Qihoo Technology Company Limited | Android simulator and method for implementing android simulator |
CN108062237A (zh) * | 2017-11-23 | 2018-05-22 | 上海博泰悦臻电子设备制造有限公司 | Linux系统和Android系统的兼容方法及系统、存储介质及车载终端 |
CN112068897A (zh) * | 2020-08-16 | 2020-12-11 | 北京麟卓信息科技有限公司 | 基于鼠键模拟的Android应用文件加载方法和装置 |
CN112364607A (zh) * | 2020-10-08 | 2021-02-12 | 北京麟卓信息科技有限公司 | 一种Android应用编辑Linux文件的方法和装置 |
CN112269604A (zh) * | 2020-11-11 | 2021-01-26 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android应用的窗口交互方法及装置 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656196B (zh) * | 2021-08-16 | 2024-02-27 | 深圳技德应用技术有限公司 | 一种Linux兼容Android的应用间传送文件方法及装置 |
CN113641437A (zh) * | 2021-08-16 | 2021-11-12 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用界面旋转方法及装置 |
CN113641320A (zh) * | 2021-08-16 | 2021-11-12 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的共享屏幕方法及装置 |
CN113641437B (zh) * | 2021-08-16 | 2023-06-16 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用界面旋转方法及装置 |
CN113656196A (zh) * | 2021-08-16 | 2021-11-16 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的应用间传送文件方法及装置 |
CN113641320B (zh) * | 2021-08-16 | 2023-10-27 | 深圳技德智能科技研究院有限公司 | 一种Linux兼容Android的共享屏幕方法及装置 |
CN113407086A (zh) * | 2021-08-20 | 2021-09-17 | 北京鲸鲮信息系统技术有限公司 | 对象拖拽方法、设备和存储介质 |
WO2023020149A1 (zh) * | 2021-08-20 | 2023-02-23 | 北京字节跳动网络技术有限公司 | 对象拖拽方法、设备和存储介质 |
CN113407086B (zh) * | 2021-08-20 | 2021-11-30 | 北京鲸鲮信息系统技术有限公司 | 对象拖拽方法、设备和存储介质 |
CN113672407A (zh) * | 2021-08-24 | 2021-11-19 | 深圳技德终端技术有限公司 | 一种Linux兼容Android的键盘输入控制方法及装置 |
CN113655940A (zh) * | 2021-08-24 | 2021-11-16 | 深圳技德应用技术有限公司 | 一种Linux兼容Android的模拟双指缩放方法及装置 |
CN113778280A (zh) * | 2021-09-13 | 2021-12-10 | 北京技德系统技术有限公司 | 一种Linux兼容Android的显示消息通知方法及装置 |
CN113778280B (zh) * | 2021-09-13 | 2023-11-14 | 北京技德系统技术有限公司 | 一种Linux兼容Android的显示消息通知方法及装置 |
CN114035863A (zh) * | 2021-11-11 | 2022-02-11 | 北京鲸鲮信息系统技术有限公司 | 在Linux系统中操作安卓应用的方法、装置和设备 |
CN113986858A (zh) * | 2021-12-24 | 2022-01-28 | 北京鲸鲮信息系统技术有限公司 | Linux兼容安卓系统的共享文件操作方法和装置 |
CN114185851A (zh) * | 2022-02-14 | 2022-03-15 | 麒麟软件有限公司 | 安卓访问Linux本地目录和文件的方法与系统 |
CN114201087A (zh) * | 2022-02-17 | 2022-03-18 | 北京麟卓信息科技有限公司 | 一种安卓应用图标在Linux任务栏的显示方法 |
CN114201087B (zh) * | 2022-02-17 | 2022-05-20 | 北京麟卓信息科技有限公司 | 一种安卓应用图标在Linux任务栏的显示方法 |
CN114385305A (zh) * | 2022-03-23 | 2022-04-22 | 麒麟软件有限公司 | 一种录制Linux屏幕并分享给安卓应用的系统和方法 |
CN114385305B (zh) * | 2022-03-23 | 2022-07-08 | 麒麟软件有限公司 | 一种录制Linux屏幕并分享给安卓应用的系统和方法 |
CN114385047A (zh) * | 2022-03-24 | 2022-04-22 | 北京麟卓信息科技有限公司 | Linux平台上基于Intent的安卓应用文件发送方法 |
CN114995716B (zh) * | 2022-08-02 | 2022-09-30 | 北京麟卓信息科技有限公司 | 一种桌面系统上安卓应用相关文件的操作方法 |
CN114995716A (zh) * | 2022-08-02 | 2022-09-02 | 北京麟卓信息科技有限公司 | 一种桌面系统上安卓应用相关文件的操作方法 |
CN115292073A (zh) * | 2022-10-09 | 2022-11-04 | 北京麟卓信息科技有限公司 | 一种Linux平台上安卓应用文件的发送方法 |
CN115454296A (zh) * | 2022-11-11 | 2022-12-09 | 北京麟卓信息科技有限公司 | 一种跨运行环境的用户行为智能融合方法 |
CN115454296B (zh) * | 2022-11-11 | 2023-01-10 | 北京麟卓信息科技有限公司 | 一种跨运行环境的用户行为智能融合方法 |
CN115640154A (zh) * | 2022-12-23 | 2023-01-24 | 北京麟卓信息科技有限公司 | 一种基于轨迹智能预测的跨运行环境交互延迟优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113204307A (zh) | 一种在Linux上兼容运行Android系统的文件发送方法及装置 | |
US20240095043A1 (en) | Execution of sub-application processes within application program | |
US11803451B2 (en) | Application exception recovery | |
CN104536802B (zh) | 一种实现应用调用的方法及虚拟机 | |
US9317195B1 (en) | Seamless integration of non-native windows with dynamically scalable resolution into host operating system | |
US8910163B1 (en) | Seamless migration of non-native application into a virtual machine | |
US9032026B2 (en) | Methods and systems for providing, by a remote machine, access to a desk band associated with a resource executing on a local machine | |
US9417889B2 (en) | Fast provisioning of a centralized virtual desktop using linked clones with overlaid centralized virtual desktop layers | |
US7100165B2 (en) | Methods and systems for synchronizing processes executing on a digital data processing system | |
US7975236B1 (en) | Seamless integration of non-native application into host operating system | |
US20140365971A1 (en) | Systems and methods for sharing and switching between personas on mobile technology platforms | |
CN110088733A (zh) | 虚拟机迁移的基于存储层的编排 | |
US10007533B2 (en) | Virtual machine migration | |
CN112068897B (zh) | 基于鼠键模拟的Android应用文件加载方法和装置 | |
MX2013003427A (es) | Redireccion de ambiente cruzado. | |
MX2013003515A (es) | Presentacion remota instantanea. | |
CN107977469B (zh) | 对最近使用文件进行管理的方法、装置及终端 | |
US10289693B2 (en) | Techniques for providing user interface enhancements for online content management system version histories | |
US20150067664A1 (en) | System, method and apparatus for transparently enabling software applications with adaptive user interfaces | |
US9910662B2 (en) | Selectively migrating applications during an operating system upgrade | |
US9804872B1 (en) | Method for emulation of a virtual OS bookmark on a host desktop | |
WO2022228236A1 (zh) | 控制安卓app的方法、装置及终端设备 | |
US9910667B2 (en) | Segregating a monolithic computing system into multiple attachable application containers based on application boundaries | |
US11422668B1 (en) | Seamless application updates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210803 |
|
WD01 | Invention patent application deemed withdrawn after publication |