著录项信息
专利名称 | 一种锁屏属性传递方法及移动终端 |
申请号 | CN201510434014.9 | 申请日期 | 2015-07-22 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-11-04 | 公开/公告号 | CN105022634A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/44 | IPC分类号 | G;0;6;F;9;/;4;4查看分类表>
|
申请人 | 上海斐讯数据通信技术有限公司 | 申请人地址 | 浙江省湖州市东林镇工业功能区
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 浙江远特新材料有限公司 | 当前权利人 | 浙江远特新材料有限公司 |
发明人 | 田泽丰 |
代理机构 | 杭州千克知识产权代理有限公司 | 代理人 | 周希良 |
摘要
本发明提供一种锁屏属性传递方法,移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件,锁屏属性传递方法包括:在进入锁屏模式时,在应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置另一交互组件的锁屏属性;调用第二操作函数解析目标参数以判断是否继承该锁屏属性,若是,通知系统层上的管理组件对另一交互组件设置的锁屏属性执行系统更新操作;需关闭交互组件时,执行锁屏属性取消操作;若否,结束。本发明在锁屏界面不关闭的情况下连续打开交互组件,包括不同APP的交互组件,当交互组件关闭时,所有继承该交互组件的锁屏属性都会取消。
1.一种锁屏属性传递方法,应用于配置包括应用层和系统层的操作系统的移动终端,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件,其特征在于,所述锁屏属性传递方法包括以下步骤:
步骤一,在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性;
步骤二,调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则继续执行下一步骤,若否,则结束进程;
步骤三,通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作;
步骤四,当需关闭所述交互组件时,执行锁屏属性取消操作。
2.根据权利要求1所述的锁屏属性传递方法,其特征在于:所述步骤一具体包括:
在所述第一操作函数中判断所述目标参数是否为空值,若否,则执行下一步骤;若是,不做任何处理,结束进程;
判断所述移动终端是否处于锁屏状态;若是,执行下一步骤;若否,不做任何处理,结束进程;
通过所述目标参数获取所述交互组件的锁屏属性;
判断是否为所述另一交互组件设置锁屏属性;若是,执行下一步骤,若否,则不做任何处理,结束进程;
判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则设置所述目标参数的锁屏属性标志为自配锁屏属性标志。
3.根据权利要求2所述的锁屏属性传递方法,其特征在于:所述步骤二具体包括:
在所述第二操作函数中获取及解析所述交互组件中的目标参数;
根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并转入下一步骤;若否,继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并转入下一步骤,若否,不做任何处理,结束进程;
发送更新指令令系统层上的管理组件执行系统更新操作。
4.根据权利要求3所述的锁屏属性传递方法,其特征在于:所述步骤三具体包括:
获取所述交互组件的锁屏属性及继承锁屏属性标志;
判断是否为所述另一交互组件设置锁屏属性,若是,继续执行下一步骤;若否,不做任何处理,结束进程;
判断是否为所述另一交互组件设置继承锁屏属性标志,若否,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中;若是,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中。
5.根据权利要求4所述的锁屏属性传递方法,其特征在于:所述步骤四具体包括:
调用系统层上的管理组件的第三操作函数;
获取所述交互组件对应的窗口状态实例;
判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,结束进程;
若否,则从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例;
判断获取到的窗口状态实例是否与关闭所述交互组件的窗口状态实例匹配;若否,则返回上一步骤;若否,则取消设置窗口状态实例的锁屏属性,并通知所述窗口状态实例对应的锁屏属性设置已取消。
6.一种移动终端,配置包括应用层和系统层的操作系统,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件,其特征在于,所述移动终端包括:
处理模块,用于在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性;
判断模块,与所述处理模块连接,用于调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则调用用于通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作的更新操作模块和用于当需关闭所述交互组件时,执行锁屏属性取消操作的取消操作模块;若否,则调用终止模块。
7.根据权利要求6所述的移动终端,其特征在于:所述处理模块还用于在所述第一操作函数中判断所述目标参数是否为空值,若不为空值,则调用判断所述移动终端是否处于锁屏状态;若移动终端处于锁屏状态,通过所述目标参数获取所述交互组件的锁屏属性,并继续判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则设置所述目标参数的锁屏属性标志为自配锁屏属性标志;若移动终端未处于锁屏状态,不做任何处理;若为空值,不做任何处理,调用所述终止模块。
8.根据权利要求7所述的移动终端,其特征在于:所述判断模块还用于在所述第二操作函数中获取及解析所述交互组件中的目标参数;根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作;若否,继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作,若否,不做任何处理,调用所述终止模块。
9.根据权利要求8所述的移动终端,其特征在于:所述更新操作模块还用于获取所述交互组件的锁屏属性及继承锁屏属性标志;判断是否为所述另一交互组件设置锁屏属性,若设置,判断是否为所述另一交互组件设置继承锁屏属性标志,若否,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中;若是,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中;若不设置,调用所述终止模块。
10.根据权利要求8所述的移动终端,其特征在于:所述取消操作模块还用于调用系统层上的管理组件的第三操作函数;获取所述交互组件对应的窗口状态实例;判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,调用所述终止模块;若否,则从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例;判断是否关闭所述交互组件的窗口状态实例;若否,则返回重新判断遍历所述窗口状态实例中预存哈希表是否结束;若否,则取消设置窗口状态实例的锁屏属性,并通知所述窗口状态实例对应的锁屏属性设置已取消。
一种锁屏属性传递方法及移动终端\n技术领域\n[0001] 本发明属于移动终端技术领域,涉及一种传递方法,特别是涉及一种锁屏属性传递方法及移动终端。\n背景技术\n[0002] 当前,智能移动终端已经逐渐成为人们日程生活工作中必不可少的物品。随着这些移动终端的功能不断完善,其变得越来越智能化、人性化、功能也由原来的单一逐渐变得多样化。所以在伴随着海量信息安装在移动终端,移动终端的功能能够越来越丰富。\n[0003] 但是目前的移动终端在Android系统中的不解锁的情况下,要打开一个Activity并显示在前台,需要设置FLAG_SHOW_WHEN_LOCKED属性。在打开Activity的过程中,Android系统会检测Activity是否设置了FLAG_SHOW_WHEN_LOCKED属性,对于设置了FLAG_SHOW_WHEN_LOCKED属性的Activity,即使在锁屏状态下,Android系统也会将其调度在前台显示,比较常见的是呼叫Activity,在锁屏状态下,有来电时,呼叫Activity就会显示在前台。当Activity关闭后,会重新回到锁屏界面。在设置了FLAG_SHOW_WHEN_LOCKED属性的Activity中,当打开新的Activity时,比如第三方APP的Activity,如果新的Activity没有设置FLAG_SHOW_WHEN_LOCKED属性,那么就无法显示在前台,只有在解锁之后才能显示,会导致用户体验不佳。\n[0004] 因此,如何提供一种锁屏属性传递方法及移动终端,以解决现有技术中移动终端在锁屏状态下第三方应用程序的交互组件,在不配置锁屏属性的情况下,第三方应用程序的交互组件无法显示在移动终端的前台,导致用户无法享受更加丰富的应用功能,用户体检不佳等种种缺陷,实已成为本领域从业者亟待解决的技术问题。\n发明内容\n[0005] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种锁屏属性传递方法及移动终端,用于解决现有技术中移动终端在锁屏状态下第三方应用程序的交互组件,在不配置锁屏属性的情况下,第三方应用程序的交互组件无法显示在移动终端的前台,导致用户无法享受更加丰富的应用功能,用户体检不佳的问题。\n[0006] 为实现上述目的及其他相关目的,本发明一方面提供一种锁屏属性传递方法,应用于配置包括应用层和系统层的操作系统的移动终端,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件,所述锁屏属性传递方法包括以下步骤:步骤一,在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性;步骤二,调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则继续执行下一步骤,若否,则结束进程。步骤三,通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作;步骤四,当需关闭所述交互组件时,执行锁屏属性取消操作。\n[0007] 可选地,所述步骤一具体包括:在所述第一操作函数中判断所述目标参数是否为空值,若否,则执行下一步骤;若是,不做任何处理,结束进程;判断所述移动终端是否处于锁屏状态;若是,执行下一步骤;若否,不做任何处理,结束进程;通过所述目标参数获取所述交互组件的锁屏属性;判断是否为所述另一交互组件设置锁屏属性;若是,执行下一步骤,若否,则不做任何处理,结束进程;判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则设置所述目标参数的锁屏属性标志为自配锁屏属性标志。\n[0008] 可选地,所述步骤二具体包括:在所述第二操作函数中获取及解析所述交互组件中的目标参数;根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并转入下一步骤;\n若否,继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并转入下一步骤,若否,不做任何处理,结束进程;发送更新指令令系统层上的管理组件执行系统更新操作。\n[0009] 可选地,所述步骤三具体包括:获取所述交互组件的锁屏属性及继承锁屏属性标志;判断是否为所述另一交互组件设置锁屏属性,若是,继续执行下一步骤;若否,不做任何处理,结束进程;判断是否为所述另一交互组件设置继承锁屏属性标志,若否,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中;若是,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中。\n[0010] 可选地,所述步骤四具体包括:调用系统层上的管理组件的第三操作函数;获取所述交互组件对应的窗口状态实例;判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,结束进程;若否,则从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例;判断获取到的窗口状态实例是否与关闭所述交互组件的窗口状态实例匹配;若否,则返回上一步骤;若否,则取消设置窗口状态实例的锁屏属性,并通知所述窗口状态实例对应的锁屏属性设置已取消。\n[0011] 本发明另一方面还提供一种移动终端,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件,所述移动终端包括:处理模块,用于在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性;判断模块,与所述处理模块连接,用于调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则调用用于通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作的更新操作模块和用于当需关闭所述交互组件时,执行锁屏属性取消操作的取消操作模块;若否,则调用终止模块。\n[0012] 可选地,所述处理模块还用于在所述第一操作函数中判断所述目标参数是否为空值,若不为空值,则调用判断所述移动终端是否处于锁屏状态;若移动终端处于锁屏状态,通过所述目标参数获取所述交互组件的锁屏属性,并继续判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则设置所述目标参数的锁屏属性标志为自配锁屏属性标志;若移动终端未处于锁屏状态,不做任何处理;若为空值,不做任何处理,调用所述终止模块。\n[0013] 可选地,所述判断模块还用于在所述第二操作函数中获取及解析所述交互组件中的目标参数;根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作;若否,继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作,若否,不做任何处理,调用所述终止模块。\n[0014] 可选地,所述更新操作模块还用于获取所述交互组件的锁屏属性及继承锁屏属性标志;判断是否为所述另一交互组件设置锁屏属性,若设置,判断是否为所述另一交互组件设置继承锁屏属性标志,若否,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中;若是,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中;若不设置,调用所述终止模块;\n[0015] 可选地,所述取消操作模块还用于调用系统层上的管理组件的第三操作函数;获取所述交互组件对应的窗口状态实例;判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,调用所述终止模块;若否,则从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例;判断是否关闭所述交互组件的窗口状态实例;\n若否,则返回重新判断遍历所述窗口状态实例中预存哈希表是否结束;若否,则取消设置窗口状态实例的锁屏属性,并通知所述窗口状态实例对应的锁屏属性设置已取消。\n[0016] 如上所述,本发明的锁屏属性传递方法及移动终端,具有以下有益效果:\n[0017] 本发明所述的锁屏属性传递方法及移动终端能够在锁屏界面不关闭的情况下连续打开交互组件,包括不同APP的交互组件,当交互组件关闭时,所有继承该交互组件的锁屏属性都会取消。\n附图说明\n[0018] 图1显示为本发明的锁屏属性传递方法的流程示意图。\n[0019] 图2显示为本发明的锁屏属性传递方法中步骤S1的具体流程示意图。\n[0020] 图3显示为本发明的锁屏属性传递方法中步骤S2的具体流程示意图。\n[0021] 图4显示为本发明的锁屏属性传递方法中步骤S3的具体流程示意图。\n[0022] 图5显示为本发明的锁屏属性传递方法中步骤S4的具体流程示意图。\n[0023] 图6显示为本发明的锁屏属性传递系统的原理结构示意图。\n[0024] 元件标号说明\n[0025] 1 移动终端\n[0026] 11 处理模块\n[0027] 12 判断模块\n[0028] 13 更新操作模块\n[0029] 14 取消操作模块\n[0030] 15 终止模块\n[0031] S1~S4 步骤\n[0032] S11~S17 步骤\n[0033] S21~S26 步骤\n[0034] S31~S35 步骤\n[0035] S41~S46 步骤\n具体实施方式\n[0036] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。\n[0037] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。\n[0038] 本发明所述的锁屏属性传递方法的技术原理如下:\n[0039] Android系统中,在锁屏状态下,在Activity中配置FLAG_SHOW_WHEN_LOCKED属性后,当打开该Activity时,系统会将锁屏界面放在后台,在前台正常打开Activity,用户可以正常操作该Activity而不受锁屏限制。当该Activity关闭后,锁屏界面重新出现在前台。\n在该Activity中打开新的Activity时,如果新的Activity中没有设置FLAG_SHOW_WHEN_LOCKED属性,系统将新的Activity直接放置在后台,不会在前台显示,直到用户解锁后新的Activity才能显示在前台。为了在新打开的Activity中也能够显示在前台,需要将原Activity的FLAG_SHOW_WHEN_LOCKED属性传递到新的Activity中,这样新的Activity就继承了原Activity的FLAG_SHOW_WHEN_LOCKED属性,当原Activity关闭后,新Activity的FLAG_SHOW_WHEN_LOCKED属性也将会被取消。\n[0040] 为了完成该功能,在原Activity中打开新的Activity时,通过Intent将原Activity的FLAG_SHOW_WHEN_LOCKED属性信息传递到新的Activity中,当新Activity的onCreate函数调用时,需要从Intent中解析出对应的信息,然后设置新Activity的FLAG_SHOW_WHEN_LOCKED继承属性。由于Activity可能分属于不同的APP进程,所以Android系统在WindowManagerService模块中统一管理所有的Activity,通过Activity在WindowManagerService中的映射WindowState来管理对应的Activity,当Activity的FLAG_SHOW_WHEN_LOCKED继承属性被设置后,WindowManagerService的WindowState也会更新对应的FLAG_SHOW_WHEN_LOCKED属性,此时需要在WindowState中记录上一个Activity的WindowState信息,当主Activity关闭时,其在WindowManagerService中的映射WindowState也会被清除,此时继承了该Activity的所有Activity的FLAG_SHOW_WHEN_LOCKED属性也会被清除。\n[0041] 实施例一\n[0042] 本实施例提供一种锁屏属性传递方法,应用于配置包括应用层和系统层的操作系统的移动终端,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件。在本实施例中,所述操作系统为Android系统。请参阅图1,显示为锁屏属性方法的流程示意图。如图1所示,所示锁屏属性方法包括以下几个步骤:\n[0043] S1,在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性。Android系统中,应用层面所有打开Activity的函数最终都会调用Instrumentation.java中的exceStartActivity函数,根据参数不同,提供三种类型的exceStartActivity函数:\n[0044] 1、public ActivityResult execStartActivity(\n[0045] Context who,IBinder contextThread,IBinder token,Activity target,[0046] Intent intent,int requestCode,Bundle options)\n[0047] 2、public ActivityResult execStartActivity(\n[0048] Context who,IBinder contextThread,IBinder token,Activity target,[0049] Intent intent,int requestCode,Bundle options,UserHandle user)[0050] 3、public ActivityResult execStartActivity(\n[0051] Context who,IBinder contextThread,IBinder token,Fragment target,[0052] Intent intent,int requestCode,Bundle options)\n[0053] 如果是在Fragment中打开新的Activity,则调用第三种execStartActivity函数。\n对于在Activity中打开,则根据参数情况调用第一种和第二种execStartActivity函数,原Activity作为target参数传递进来。我们需要在对应的execStartActivity函数中根据Activity状态,添加Intent参数成员,在新的Activity的onCreate函数中解析Intent成员,确定是否设置FLAG_SHOW_WHEN_LOCKED继承属性。请参阅图2,显示为步骤S1的具体流程示意图。如图2所示,所述步骤S1包括:\n[0054] S11,在所述第一操作函数中判断所述目标参数是否为空值,若否,则执行下一步骤;若是,不做任何处理,结束进程。在本步骤中,所述第一操作函数为execStartActivity函数。\n[0055] S12,判断所述移动终端是否处于锁屏状态;若是,执行下一步骤;若否,不做任何处理,结束进程;在本步骤中,获取Android系统锁屏服务组件\n[0056] 首先,KeyguardManager mKeyguardManager=(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);\n[0057] 接着,调用锁屏服务组件inKeyguardRestrictedInputMode函数获取锁屏标志[0058] boolean flag=mKeyguardManager.inKeyguardRestrictedInputMode();\n[0059] 锁屏标志为true即为锁屏状态,为false即为解锁状态\n[0060] if(flag==true)满足这个判断条件即为锁屏状态\n[0061] if(flag==false)满足这个判断条件即为解锁状态。\n[0062] S13,通过所述目标参数获取所述交互组件的锁屏属性;\n[0063] S14,判断是否为所述另一交互组件设置锁屏属性;若是,执行下一步骤,若否,则不做任何处理,结束进程;在判断所述另一交互组件是否设置锁屏属性的依据为:\n[0064] 调用次Activity的getWindow函数获取对应的Window组件\n[0065] Window win=getWindow( );\n[0066] 调用Window组件的getFlags函数获取属性标志\n[0067] int flag=win.getFlags( );\n[0068] 根据属性标志来判读是否设置了FLAG_SHOW_WHEN_LOCKED属性\n[0069] if(flag&FLAG_SHOW_WHEN_LOCKED)满足此条件即为对应属性设置\n[0070] if(!(flag&FLAG_SHOW_WHEN_LOCKED))满足此条件即为对应属性没有设置。\n[0071] S15,判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,则执行S16,即设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则执行步骤S17,设置所述目标参数的锁屏属性标志为自配锁屏属性标志。在本步骤中,要判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性需要满足以下两个条件,第一个是上面的判断,即设置了FLAG_SHOW_WHEN_LOCKED,第二个是还有一个继承锁屏属性标志,定义在Activity中,具体如下public boolean mInheritFlag;\n[0072] if(mInheritFlag==true)即是继承FLAG_SHOW_WHEN_LOCKED属性\n[0073] if(mInheritFlag==false)即是本身FLAG_SHOW_WHEN_LOCKED属性[0074] 在步骤S1中会根据判断条件设置继承属性标志。\n[0075] S2,所述另一交互组件调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则继续执行下一步骤,若否,则结束。FLAG_SHOW_WHEN_LOCKED属性都是在应用层面进行设置的,同样继承的FLAG_SHOW_WHEN_LOCKED属性也应在应用层面进行设置。在Activity的第二操作函数,即onCreate函数中,需要根据打开该Activity时附带的Intent信息来判断是否需要继承FLAG_SHOW_WHEN_LOCKED属性。请参阅图3,显示为步骤S2的具体流程示意图,如图3所示,所述步骤S2包括:\n[0076] S21,在所述第二操作函数中获取及解析所述交互组件中的目标参数;\n[0077] S22,根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,执行步骤S23,即设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并转入下一步骤S24;若否,执行步骤S25,即继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则执行步骤S26,即设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并转入下一步骤S24,若否,不做任何处理,结束进程。在本实施例中,由于目标参数是Android定义好的数据包,其作用就是用于在各个交互组价之间传递数据,在该目标参数中需要放置两个数据:\n[0078] 数据标识“锁屏属性”,对应数据类型为boolean,为true即设置了锁屏属性,为false即没有设置锁屏属性。\n[0079] 数据标识“继承标志”,对应数据类型为boolean,为true即设置了继承标志,为false即没有设置继承标志。同时满足这两个条件,即继承锁屏属性。\n[0080] S24,发送更新指令令系统层上的管理组件执行系统更新操作。在本步骤中,在设置锁屏属性和继承锁屏属性标志之后,需要通过在应用层和系统层中\nWindowManagerService之间的会话(Session)接口,通知WindowManagerService更新对应的锁屏属性,即通知WindowManagerService继续执行步骤S3。\n[0081] S3,通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作。请参阅图4,显示为步骤S3的具体流程示意图。Android系统为了方便管理不同应用中的Activity,在打开一个新的Activity,即打开另一交互组件时,在WindowManagerService中,会对应的建立一个WindowState实例,与应用层的Activity一一对应,同时在WindowManagerService中建立起IWindow函数和WindowState关联的哈希表,应用层的Activity通过IWindow接口与WindowManagerService中的WindowState进行交互。当Activity的属性发生变化时,需要通过Session接口通知WindowManagerService,同时附带Activity对应的IWindow参数,WindowManagerService通过IWindow参数从哈希表中获取Activity对应的WindowState实例进行操作。\n[0082] 如图4所示,所述步骤S3具体包括以下步骤:\n[0083] S31,获取所述交互组件的锁屏属性及继承锁屏属性标志。\n[0084] S32,判断是否为所述另一交互组件设置锁屏属性,若是,继续执行下一步骤;若否,不做任何处理,结束进程;\n[0085] S33,判断是否为所述另一交互组件设置继承锁屏属性标志,若否,执行步骤S34,若是,则执行步骤S35。\n[0086] S34,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中。\n[0087] S35,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中。\n[0088] 在步骤S3中,WindowManagerService中首先获取原Activity对应的WindowState实例,然后从WindowState实例中获取其所继承的Activity对应的WindowState实例,再保存到新Activity对应的WindowState实例中,这样保证交互组件(原Activity直接设置FLAG_SHOW_WHEN_LOCKED锁屏属性,而不是继承的)后面所有打开的另一交互组件(Activity)对应的WindowState实例中都指向了原Activity对应的WindowState实例,这样当交互组件(原Activity)关闭时,所有继承了该交互组件锁屏属性的另一交互组件的锁屏属性都需要取消。\n[0089] S4,当需关闭所述交互组件时,执行锁屏属性取消操作。当直接设置FLAG_SHOW_WHEN_LOCKED锁屏属性的Activity关闭后,所有继承于该Activity(交互组件)的锁屏属性都需要取消。当Activity关闭时,上层会通过Session接口附带IWindow参数调用WindowManagerService中removeWindow函数,在该函数中,通过IWindow参数获取上层关闭Activity对应的WindowState实例,然后对WindowState哈希列表(所有打开的Activity所对应的WindowState实例构成一个哈希表)进行遍历搜索,匹配所有WindowState实例中保存的其所继承锁屏属性的WindowState实例信息。请参阅图5,显示为步骤S5的具体流程示意图。如图5所示,所述步骤S5包括以下几个步骤:\n[0090] S41,调用系统层上的管理组件的第三操作函数。在本实施例中,所述第三操作函数为removeWindow函数。\n[0091] S42,获取所述交互组件对应的窗口状态实例。\n[0092] S43,判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,结束进程;若否,则执行步骤S44,即从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例。所述哈希表时由两部分构成的,一部分是哈利表的数目,一部分是哈希表数组,遍历时从哈希表数组中取出内容,当取出的数目达到了哈希表的数目,即遍历结束。\n[0093] S45,判断获取到的窗口状态实例是否与关闭所述交互组件的窗口状态实例匹配;\n若否,则返回上一步骤S43;若否,则执行步骤S46。在本步骤中,判断匹配的依据是:通过IWindow参数获得Activity对应的WindowState实例”获取了一个WindowState实例1,后面通过哈希表中查找出了WindowState实例2,判断两个WindowState实例是否相同,直接就是判断其对应的数据是否相同。具体如下:\n[0094] WindowState ws1;WindowState ws2;\n[0095] if(ws1==ws2)满足这个条件即为相同\n[0096] ]\n[0097] S46,取消设置窗口状态实例的锁屏属性,并通过IWindow参数获取上层调用接口通知所述窗口状态实例对应的锁屏属性设置已取消。在本实施例中,对于匹配上的WindowState,需要取消其所继承的锁屏属性,并且通过IWindow参数获取与WindowState对应的上层Activity的交互接口,通知Activity锁屏属性已经取消,这样Activity进行属性更新后,重新调整Activity的显示状态,如果此时还处于锁屏状态下,则Activity会隐藏到锁屏界面后面,直到锁屏解锁后重新在前台显示。\n[0098] 本实施例所提供的锁屏属性传递方法能够在锁屏界面不关闭的情况下连续打开交互组件,包括不同APP的交互组件,当所述一交互组件关闭时,所有继承该交互组件的锁屏属性都会取消。\n[0099] 本实施例还提供一种移动终端1,所述移动终端包括可调度在前台显示的配置锁屏属性的交互组件和未配置锁屏属性的另一交互组件。请参阅图6,显示为移动终端的原理结构示意图。所述移动终端1包括处理模块11,判断模块12,更新操作模块13,取消操作模块\n14,及终止模块15。\n[0100] 所述处理模块11用于在进入锁屏模式时,在所述应用层上交互组件通过调用第一操作函数打开另一交互组件,添加用于告知系统交互组件打开另一交互组件的目标参数,设置所述另一交互组件的锁屏属性。所述处理模块11具体用于在所述第一操作函数中判断所述目标参数是否为空值,若不为空值,则调用判断所述移动终端是否处于锁屏状态;若移动终端处于锁屏状态,通过所述目标参数获取所述交互组件的锁屏属性,并继续判断为所述另一交互组件设置的锁屏属性是否为继承所述交互组件的锁屏属性,若是,设置所述目标参数的锁屏属性标志为继承锁屏属性标志;若否,则设置所述目标参数的锁屏属性标志为自配锁屏属性标志;若移动终端未处于锁屏状态,不做任何处理;若为空值,不做任何处理,调用所述终止模块15。\n[0101] 判断模块12与所述处理模块11连接,用于调用第二操作函数解析所述目标参数以判断是否继承该锁屏属性,若是,则调用用于通知系统层上的管理组件对所述另一交互组件设置的锁屏属性执行系统更新操作的更新操作模块和用于当需关闭所述交互组件时,执行锁屏属性取消操作的取消操作模块;若否,则调用终止模块15。所述判断模块12具体用于用于在所述第二操作函数中获取及解析所述交互组件中的目标参数;根据获取的所述目标参数判断所述目标参数中锁屏属性是否为继承锁屏属性,若是,设置所述另一交互组件的锁屏属性标志为继承锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作;若否,继续判断所述目标参数中锁屏属性标志是否是自配锁屏属性标志,若是,则设置所述另一交互组件的锁屏属性标志为自配锁屏属性标志,并发送更新指令令系统层上的管理组件执行系统更新操作,若否,不做任何处理,调用所述终止模块15。\n[0102] 所述更新操作模块13具体用于获取所述交互组件的锁屏属性及继承锁屏属性标志;判断是否为所述另一交互组件设置锁屏属性,若设置,判断是否为所述另一交互组件设置继承锁屏属性标志,若否,获取所述交互组件的窗口状态实例,并将获取的所述交互组件的窗口状态实例保存到另一交互组件所对应的窗口状态中;若是,获取所述交互组件的窗口状态实例,从获取的所述交互组件的窗口状态实例中获取其中继承窗口状态实例,将获取的继承窗口状态实例保存到另一交互组件所对应窗口状态中;若不设置,不做任何处理,调用所述终止模块15。\n[0103] 所述取消操作模块14与所述更新操作13连接,其具体用于调用系统层上的管理组件的第三操作函数;获取所述交互组件对应的窗口状态实例;判断遍历所述窗口状态实例中预存哈希表是否结束,若是,不做任何处理,并调用所述终止模块15;若否,则从所述交互组件的窗口状态实例中获取与其继承锁屏属性对应的窗口状态实例;判断是否关闭所述交互组件的窗口状态实例;若否,则返回重新判断遍历所述窗口状态实例中预存哈希表是否结束;若否,则取消设置窗口状态实例的锁屏属性,并通知所述窗口状态实例对应的锁屏属性设置已取消。\n[0104] 综上所述,本发明所述的锁屏属性传递方法及应用该锁屏属性传递方法的移动终端能够在锁屏界面不关闭的情况下连续打开交互组件,包括不同APP的交互组件,当交互组件关闭时,所有继承该交互组件的锁屏属性都会取消。本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。\n[0105] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
法律信息
- 2021-12-07
专利权的转移
登记生效日: 2021.11.25
专利权人由浙江远特新材料有限公司变更为湖州帷幄知识产权运营有限公司
地址由313021 浙江省湖州市东林镇工业功能区变更为313000 浙江省湖州市吴兴区爱山街道新天地商务写字楼1019室
- 2020-12-25
专利权的转移
登记生效日: 2020.12.15
专利权人由杭州吉吉知识产权运营有限公司变更为浙江远特新材料有限公司
地址由310000 浙江省杭州市滨江区西兴街道江淑路260号10242室变更为313021 浙江省湖州市东林镇工业功能区
- 2017-12-01
- 2015-12-02
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201510434014.9
申请日: 2015.07.22
- 2015-11-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-05-18
|
2011-01-19
| | |
2
| |
2015-02-04
|
2014-10-27
| | |
3
| |
2014-01-01
|
2013-09-27
| | |
4
| |
2013-06-26
|
2013-03-11
| | |
5
| |
2015-05-06
|
2014-08-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |