【技术实现步骤摘要】
悬浮窗控制方法、装置、计算机设备和可读存储介质
本申请涉及计算机控制
,特别是涉及一种悬浮窗控制方法、装置、计算机设备和可读存储介质。
技术介绍
Android端应用UI页面的点击事件和页面事件的无痕埋点数据,需要提供特圈选功能,通过圈选工具,选中所需要统计数据的UI点位,进行针对性的数据清洗。圈选时,需要提供一个悬浮球,该悬浮球需要悬浮于应用内所有业务UI元素之上。通过移动该悬浮球,选中目标UI元素。目前常见的满足本业务需求的悬浮窗方案,需要依赖SYSTEM_ALTER_WINDOW权限,即悬浮窗权限。该权限需要用户跳出应用,去电子设备的设置项里打开,一旦用户不授予权限,则无法显示悬浮窗。同时谷歌市场对于使用该权限的应用,审核会很严格。另外,常见的一种不需要申请悬浮窗权限的方案,普遍存在一个问题,即无法悬浮在新弹出的窗口上,如Android应用内的对话框,弹窗等等,因此无法满足业务中需要浮窗可以悬浮到任意UI上的基本需求。
技术实现思路
本申请提供了一种悬浮窗控制方法、装置、计算机设备和可 ...
【技术保护点】
1.一种悬浮窗控制方法,应用于电子设备,其特征在于,所述悬浮窗的窗口属性为APPLICATION,所述方法包括:/n监听隶属于Activity页面的第一DecorView的焦点变化,感知是否有第二DecorView弹出,所述第二DecorView与所述第一DecorView隶属于不同层级的根view;/n若监听到有第二DecorView弹出,则将悬浮窗从所述第一DecorView中移除,并通过所述电子设备配置的WindowManager将所述悬浮窗添加至拥有焦点的所述第二DecorView上。/n
【技术特征摘要】
1.一种悬浮窗控制方法,应用于电子设备,其特征在于,所述悬浮窗的窗口属性为APPLICATION,所述方法包括:
监听隶属于Activity页面的第一DecorView的焦点变化,感知是否有第二DecorView弹出,所述第二DecorView与所述第一DecorView隶属于不同层级的根view;
若监听到有第二DecorView弹出,则将悬浮窗从所述第一DecorView中移除,并通过所述电子设备配置的WindowManager将所述悬浮窗添加至拥有焦点的所述第二DecorView上。
2.根据权利要求1所述的方法,其特征在于,所述监听隶属于Activity页面的第一DecorView的焦点变化,感知是否有第二DecorView弹出包括:
在Activity页面的onResume状态,通过WindowManager获取隶属于Activity页面的第一DecorView,并为所述第一DecorView创建WindowsFocusChangeListener监听器;
当所述监听器接收到焦点发生变化的回调值时,获取当前拥有焦点的DecorView对象,并与所述第一DecorView对象进行对比;
若当前拥有焦点的DecorView对象与所述第一DecorView对象不属于同一对象,则确定有拥有焦点的第二DecorView弹出。
3.根据权利要求2所述的方法,其特征在于,获取当前拥有焦点的DecorView对象包括:
通过反射分别调用WindowManagerGlobal中的GetViewRootNames方法,获取窗口下的DecorView数组;
循环遍历所述DecorView数组,并通过GetRootView方法获取所述DecorView数组中的DecorView对象,通过DecorView对象的HasWindowFocus方法判断DecorView对象是否拥有焦点。
4.根据权利要求1所述的方法,其特征在于,所述第二DecorView包括对话框、dialog和/或popWindow中的至少一种。
5.根据权利要求1所述的方法,其特征在于,所述悬浮窗的LayoutPa...
【专利技术属性】
技术研发人员:胡晓岽,
申请(专利权)人:杭州涂鸦信息技术有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。