一种ID获取方法、装置、电子设备及存储介质与流程

文档序号:18166919发布日期:2019-07-13 09:40阅读:260来源:国知局
一种ID获取方法、装置、电子设备及存储介质与流程

本发明涉及计算机应用技术领域,特别是涉及一种id获取方法、装置、电子设备及存储介质。



背景技术:

在应用开发过程中,往往需要获取设备的设备标识(identification,id)来标识该设备。

目前,为避免随机生成的设备id不够稳定以及内部存储空间中存储的设备id容易被清除或变更的问题,可以按照一定的算法生成设备id,并将生成的设备id存储在设备的安全数码(securedigital,sd)卡中。在需要获取该设备的设备id时,可以直接从该设备的sd卡中获取得到设备id。但是随着用户安全意识的不断增强,用户可以对sd卡的读取权限进行设定,这使得在没有对sd卡进行读取权限的情况下,无法从sd卡中获取存储的设备id。



技术实现要素:

本发明实施例的目的在于提供一种id获取方法、装置、电子设备和存储介质,以在不主动向设备请求权限的情况下,获取得到设备中存储的设备id,提高获取设备id的有效性。具体技术方案如下:

本发明实施例提供了一种标识id获取方法,包括:

检测是否具有针对目标设备的外部存储空间的读权限;

若不具有针对所述外部存储空间的读权限,则确定所述目标设备中是否安装有预设应用,所述预设应用中包括用于获取设备的设备id的目标端口;

若安装有所述预设应用,则基于所述预设应用与所述目标设备中安装的其他应用之间的进程间通信,从所述目标端口获取所述目标设备的设备id为目标id。

可选的,所述方法还包括:

检测目标设备的内部存储空间中是否存在所述目标设备的目标id;

若不存在所述目标id,则执行所述检测是否具有针对所述目标设备的外部存储空间的读权限的步骤。

可选的,所述方法还包括:

若具有针对所述外部存储空间的读权限,则获取所述外部存储空间中存储的设备id,作为所述目标设备的目标id。

可选的,所述获取所述外部存储空间中存储的设备id,作为所述目标设备的目标id的步骤,包括:

获取所述外部存储空间中存储的设备id;

对所获取的设备id进行防篡改校验;

若校验通过,则确定所述设备id为所述目标设备的目标id。

可选的,所述确定所述目标设备中是否安装有预设应用的步骤,包括:

判断所述目标设备的已安装应用列表中是否包括所述预设应用的标识,所述已安装应用列表中包括已安装应用的标识;

若包括所述预设应用的标识,则确定所述目标设备中安装有所述预设应用;

若不包括所述预设应用的标识,则确定所述目标设备中未安装有所述预设应用。

可选的,若未安装有所述预设应用,则所述方法还包括:

获取所述目标设备的标识信息;

根据所述标识信息,生成所述目标设备的目标id;

将所述目标id存储到所述目标设备的内部存储空间以及外部存储空间中。

可选的,所述根据所述标识信息,生成所述目标设备的目标id的步骤,包括:

确定所述目标设备的操作系统版本是否为预设操作系统版本;

若是所述预设操作系统版本,则根据所述目标设备的初始id、设备品牌和设备型号,生成所述目标设备的目标id;

若不是所述预设操作系统版本,则将所述目标设备中包括的预设标识作为所述目标设备的目标id。

可选的,若所述目标设备中不包括所述预设标识,则所述方法还包括:

根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id。

可选的,在根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id之前,还包括:

检测所述目标设备是否具有针对所述外部存储空间的写权限;

所述根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id的步骤,包括:

若不具有针对所述外部存储空间的写权限,则根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id;

若具有针对所述外部存储空间的写权限,则根据目标字符串、所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id,其中,所述目标字符串为按照预设规则生成的字符串。

本发明实施例还提供了一种标识id获取装置,包括:

第一检测模块,用于检测是否具有针对目标设备的外部存储空间的读权限;

第一确定模块,用于在所述第一检测模块的检测结果为否时,确定所述目标设备中是否安装有预设应用,所述预设应用中包括用于获取设备的设备id的目标端口;

第一获取模块,用于在所述第一确定模块的确定结果为是时,基于所述预设应用与所述目标设备中安装的其他应用之间的进程间通信,从所述目标端口获取所述目标设备的设备id为目标id。

可选的,所述装置还包括:

第二检测模块,用于检测目标设备的内部存储空间中是否存在所述目标设备的目标id;若第二检测模块的检测结果为否,则执行所述检测是否具有针对所述目标设备的外部存储空间的读权限的步骤。

可选的,所述装置还包括:

第二获取模块,用于在所述第一检测模块的检测结果为是时,获取所述外部存储空间中存储的设备id,作为所述目标设备的目标id。

可选的,所述第二获取模块,具体用于获取所述外部存储空间中存储的设备id;对所获取的设备id进行防篡改校验;若校验通过,则确定所述设备id为所述目标设备的目标id。

可选的,所述第一确定模块,具体用于判断所述目标设备的已安装应用列表中是否包括所述预设应用的标识,所述已安装应用列表中包括已安装应用的标识;若包括所述预设应用的标识,则确定所述目标设备中安装有所述预设应用;若不包括所述预设应用的标识,则确定所述目标设备中未安装有所述预设应用。

可选的,所述装置还包括:

第三获取模块,用于在所述第一确定模块的确定结果为否时,获取所述目标设备的标识信息;

第一生成模块,用于根据所述标识信息,生成所述目标设备的目标id;

存储模块,用于将所述目标id存储到所述目标设备的内部存储空间以及外部存储空间中。

可选的,所述第一生成模块,具体用于确定所述目标设备的操作系统版本是否为预设操作系统版本;若是所述预设操作系统版本,则根据所述目标设备的初始id、设备品牌和设备型号,生成所述目标设备的目标id;若不是所述预设操作系统版本,则将所述目标设备中包括的预设标识作为所述目标设备的目标id。

可选的,所述装置还包括:

第二生成模块,用于当目标设备中不包括所述预设标识时,根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id。

可选的,所述装置还包括:

第三检测模块,用于检测所述目标设备是否具有针对所述外部存储空间的写权限;

所述第二生成模块,具体用于在所述第三检测模块的检测结果为否时,根据所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id;在所述第三检测模块的检测结果为是时,根据目标字符串、所述目标设备的硬件序列号、设备品牌和设备型号,生成所述目标设备的目标id,其中,所述目标字符串为按照预设规则生成的字符串。

本发明实施例还提供了一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的id获取方法步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的id获取方法步骤。

本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的id获取方法。

本发明实施例提供的一种id获取方法、装置、电子设备及存储介质,可以检测是否具有针对目标设备的外部存储空间的读权限,若不具有针对外部存储空间的读权限,则确定目标设备中是否安装有预设应用,预设应用中包括用于获取设备的设备id的目标端口,若安装有预设应用,则基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。通过本发明实施例提供的技术方案,可以在没有针对外部存储空间的读权限的情况下,通过进程间通信的方式,从预设应用中包括的获取设备id的目标端口中获取得到设备id,这可以在不主动向设备请求权限的情况下,获取得到设备id,提高了获取设备id的有效性。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的id生成方法的第一种流程示意图;

图2为本发明实施例提供的id生成方法的第二种流程示意图;

图3为本发明实施例提供的id获取方法第一种流程示意图;

图4为本发明实施例提供的id获取方法的第二种流程示意图;

图5为本发明实施例提供的id获取方法的第三种流程示意图;

图6为本发明实施例提供的id获取装置的一种结构示意图;

图7为本发明实施例提供的电子设备的一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,在获取设备的设备id时,设备可以按照一定的规则或算法,临时生成该设备的设备id。设备也可以按照一定的规则或算法,预先生成该设备的设备id,并将生成的设备id存储在该设备的内部存储空间中。在需要获取该设备的设备id时,直接从该设备的内部存储空间中获取得到设备id。设备还可以按照一定规则或算法,预先生成该设备的设备id,并将生成的设备id存储在设备的sd卡中,在需要获取该设备的设备id时,直接从该设备的sd卡中获取得到设备id。

然而,在上述设备id获取过程中,在设备通过临时生成设备id的方法,得到设备id时,由于设备id往往由该设备中的预设id构成的,以安卓设备为例,安卓设备中的预设id可以包括安卓标识(androidid),谷歌广告标识(googleadvertisingid),国际移动设备识别码(internationalmobileequipmentidentity,imei),媒体访问控制(mediaaccesscontrol,mac)地址,蓝牙地址以及序列号等中的一种或多种。在获取这些预设id的过程中,可能存在权限设置或者厂商提供的预设id并不是固定值等原因,使得每一次临时生成的设备id之间可能存在较大的差异,导致设备id的稳定性和唯一性较差。在设备从该设备的内部存储空间中获取设备id时,由于该设备id往往是存储在该设备中已安装应用对应的存储目录中,若该设备中已安装应用的存储目录中的数据被清除,或者该已安装应用被卸载,可能导致该设备内部存储空间中存储设备id被清除或发生变更,影响设备id的获取以及设备id的稳定性和唯一性。在设备从设备的sd卡中获取设备id时,虽然将设备id存储在设备的sd卡中,可以在一定程度上缓解了临时生成设备id以及从设备内部存储空间中获取设备id带来的设备id的稳定性和唯一性较差的问题,但是随着用户安全意识的不断增强,用户可以设定对sd卡的读取权限,这使得在没有对sd卡进行读取权限的情况下,无法从sd卡中获取存储的设备id。

另外,在设备根据该设备的预设id生成设备id,同样也存在权限限制的问题。以安卓设备为例,在安卓设备中,imei常常被作为设备id来标识安卓设备。但是随着技术的发展,设备在获取imei时也是需要权限的。针对这种情况,若安卓设备不具有imei的获取权限,该设备将无法获取到imei,也无法将imei作为设备id,影响设备id的获取。

为了解决上述在没有对sd卡进行读取权限的情况下,设备无法从sd卡中获取存储的设备id,以及由于权限问题无法有效获取到有效的预设id生成设备id的问题,本发明实施例提供了一种id获取方法。该方法可以应用于任意电子设备,该电子设备包括但不限于手机、电脑等。本发明实施例提供的id获取方法,可以检测是否具有针对目标设备的外部存储空间的读权限,若不具有针对外部存储空间的读权限,则确定目标设备中是否安装有预设应用,预设应用中包括用于获取设备的设备id的目标端口,若安装有预设应用,则基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

通过本发明实施例提供的方法,可以在没有针对外部存储空间的读权限的情况下,通过进程间通信的方式,从预设应用中包括的获取设备id的目标端口中获取得到设备id,这可以在不主动向设备请求权限的情况下,获取得到设备id,提高了获取设备id的有效性。

下面通过具体的实施例,对本发明实施例进行说明。

关于设备id的获取,往往是在目标设备中的已安装应用需要对目标设备进行标识时获取的。若目标设备的内部存储空间或外部存储空间中存储有该设备id,则目标设备中的已安装应用可以将获取存储的设备id对目标设备进行标识。若目标设备的内部存储空间和外部存储空间中均未存储目标设备的设备id,则目标设备中的已安装应用将按照一定的算法生成目标设备的设备id对目标设备进行标识,并将生成的设备id存储在目标设备的内部存储空间和外部存储空间中。为方便描述,在本发明实施例中以目标设备作为执行主体进行说明。

本发明实施例提供了一种id生成的方法。具体如图1所示,图1为本发明实施例提供的id生成方法的第一种流程示意图。该方法包括以下步骤。

步骤s101,确定目标设备的操作系统版本是否为预设操作系统版本。若是,则执行步骤s102。若否,则执行步骤s103。

在本步骤中,可以获取得到目标设备的操作系统版本,并将获取到的操作系统版本与预设操作系统版本进行比较,确定预设操作系统版本中是否包含目标设备的操作系统的版本。具体的,若预设操作系统版本中包括目标设备的操作系统版本,则可以确定目标设备的操作系统版本是预设操作系统版本。若预设操作系统版本中不包括目标设备的操作系统版本,则可以确定目标设备的操作系统版本不是预设操作系统版本。其中,预设操作系统版本至少包括一种操作系统版本。

以安卓操作系统为例进行说明。若上述预设操作系统版本包括android5.0、android6.0和android7.0。现有两个目标设备,分别为设备1和设备2,其中,设备1的操作系统版本为android7.0,设备2的操作系统版本为android8.0。针对设备1和设备2,通过将设备1和设备2的操作系统版本与预设操作系统版本进行比较,可以确定设备1的操作系统版本是预设操作系统版本,而设备2的操作系统版本不是预设操作系统版本。

对于上述预设操作系统版本可以根据当前的技术发展水平以及用户的需求等进行设定。以上述设备1和设备2获取androidid生成对应的设备id为例进行说明。在android7.0这一版本中,设备1中安装的每一应用在获取androidid生成设备id时,所获取到的androidid的唯一性较好,如获取到相同的androidid,设备1可以获取设备1的androidid生成设备id。但是在android8.0这一版本中,设备2中安装的每一应用在获取androidid生成设备id时,所获取到的androidid的唯一性较差,如设备2中包含不同签名文件的应用所获取到的androidid是不同的,使得androidid不再是设备2的唯一标识,设备2可以不获取设备2的androidid生成设备id。因此,在生成设备id的过程中,通过设定预设操作系统版本,使得操作系统版本为android7.0和android8.0的目标设备,可以采用不同的方法生成设备id。在本发明实施例中,对上述预设操作系统版本中包含的操作系统版本的数量以及预设操作系统版本的设定不作具体限定。

在本发明实施例中,通过确定目标设备的操作系统版本是否为预设操作系统版本,可以在操作系统版本不同的目标设备中采用不同的方法生成目标设备的目标id,使得本发明实施例提供的id生成方法可以适用于更多的目标设备,降低了不同操作系统版本的目标设备的目标id的碰撞率,也就是降低了不同目标设备中设备id发生冲突的概率。

步骤s102,根据目标设备的初始id、设备品牌和设备型号,生成目标设备的目标id。

在本步骤中,若确定目标设备的操作系统版本是预设操作系统版本,则可以根据目标设备的初始id、设备品牌以及设备型号,生成该目标设备的目标id。该目标id为最终需要的目标设备的设备id。

一个实施例中,当确定目标设备的操作系统版本是预设操作系统版本时,可以获取目标设备的初始id、设备品牌以及设备型号,并对获取到的初始id、设备品牌和设备型号进行拼接,得到该目标设备的目标id。例如,目标设备的初始id为id1,设备品牌为品牌1,设备型号为型号1,拼接得到的目标id可以表示为:id1-品牌1-型号1。在本发明实施例中,对上述初始id、设备品牌以及设备型号的拼接顺序以及拼接方法不作具体限定。

一个实施例中,对于上述初始id,该初始id可以为目标设备中安装的操作系统针对目标设备生成的id。以目标设备为安卓设备为例进行说明,在安卓设备中,上述初始id可以表示为上述androidid。androidid为安卓设备在第一启动时,由安卓操作系统随机生成的64位数字所对应的16进制数。

上述初始id可以由数字、文字、字母或特殊符号等构成。在本发明实施例中,对上述初始id不作具体限定。

一个可选的实施例中,若确定目标设备的操作系统版本是预设操作系统版本,则可以获取目标设备的初始id和硬件序列号,并根据获取到的初始id、硬件序列号、目标设备的设备品牌以及设备型号,生成该目标设备的目标id。在此,对目标id的生成过程不作具体说明了。

步骤s103,将目标设备中包括的预设标识作为目标设备的目标id。

在本步骤中,若目标设备的操作系统版本不是预设操作系统版本,则可以获取目标设备中存储的预设标识,并将获取到的预设标识作为目标设备的目标id。

一个实施例中,上述预设标识可以为目标设备中安装的特定应用程序针对目标设备提供的标识。以googleadvertisingid为例进行说明。googleadvertisingid为谷歌游戏服务(googleplayservice)提供的可由用户重置的id。目标设备可以将googleadvertisingid作为预设标识。在本发明实施例中,对上述预设标识不作具体限定。

一个可选的实施例中,在上述步骤s102中,若未获取到目标设备的初始id,则可以获取目标设备中的预设标识作为目标设备的目标id,也就是在目标设备未获取到上述初始id时,执行上述步骤s103。

一个可选的实施例中,对于上述步骤s102和步骤s103中生成的目标id,可以将该目标id存储到目标设备的内部存储空间和外部存储空间中。其中,内部存储空间包括但不限于目标设备的内部存储空间,以及目标设备中已安装应用的内存和私有存储目录。其中,已安装应用的内存为该已安装应用运行过程中对应的临时存储空间。外部存储空间包括但不限于sd卡、固态硬盘等。

一个实施例中,目标设备在将生成的目标id存储在外部存储空间时,可以将该目标id存储到外部存储空间的多个特定存储目录中。

一个可选的实施例中,在目标设备对生成的目标id进行存储时,目标设备还可以对生成的目标id进行加密处理。

一个实施例中,目标设备可以对生成的目标id进行加密处理。另一个实施例中,目标设备可以对生成的目标id中的部分字符串进行加密处理。在此,对加密处理的具体过程及加密处理的方法不作说明了。

一个可选的实施例中,基于图1所示的id生成方法,本发明实施例还提供了一种id生成方法。具体如图2所示,图2为本发明实施例提供的id生成方法的第二种流程示意图。该方法以下步骤。

步骤s201,确定目标设备的操作系统版本是否为预设操作系统版本。若是,则执行步骤s202。若否,则执行步骤s203。

步骤s202,根据目标设备的初始id、设备品牌和设备型号,生成目标设备的目标id。

上述步骤s201和步骤s202与上述步骤s101和步骤s102相同。

步骤s203,检测目标设备中是否包含预设标识。若是,则执行步骤s204。若否,则执行步骤s205。

步骤s204,将目标设备中包括的预设标识作为目标设备的目标id。

上述步骤s204与上述步骤s103相同。

步骤s205,根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。

在本步骤中,若目标设备中不包括上述预设标识,则可以获取目标设备的硬件序列号,并根据目标设备的设备品牌,设备型号以及获取到的硬件序列号,生成目标设备的目标id。例如,生成的目标id可以表示为:硬件序列号-设备品牌-设备型号。

关于根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id的方法,可以参照上述步骤s102中,根据目标设备的初始id、设备品牌和设备型号,生成目标设备的目标id的方法,在此不作赘述。

上述硬件序列号包括但不限于主板的硬件序列号和电池的硬件序列号。在本发明实施例中,对上述硬件序列号不作具体限定。

在本发明实施例中,对上述步骤s203和步骤s204的执行顺序不作限定。

通过图2提供的实施例,在目标设备中不包括预设标识时,可以根据目标设备的硬件序列号,设备品牌和设备型号,生成目标设备的设备id,降低了不同目标设备中目标id的碰撞率。

一个可选的实施例中,在上述执行步骤s204,根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id,上述id生成方式可以包括以下步骤。

检测目标设备是否具有针对外部存储空间的写权限。

具体的,目标设备可以检测是否具有针对目标设备的外部存储控件的写权限。

一个实施例中,目标设备可以通过权限判断的应用程序编程接口(applicationprogramminginterface,api),获取针对目标设备的外部存储空间的各权限,进而确定目标设备是否具有针对外部存储空间的写权限。

另一个实施例中,由于权限判断的api在某些设备中可能由于兼容性等原因出现判断错误的情况,为了提高对目标设备的写权限判断的准确性,目标设备可以直接将一预设信息或预设文件写入到外部存储空间中,从而确定目标设备是否具有针对外部存储空间的写权限。

例如,预设文件为文件1,将文件1写入到目标设备的外部存储空间中。若文件1被成功写入外部存储空间,目标设备将会接收到成功写入外部存储空间的响应消息,则目标设备根据接收到的响应消息确定目标设备针对外部存储空间的写权限。若文件1未被成功写入外部存储空间,目标设备将不会接收到对应的响应消息,或者接收到未成功写入的响应消息,则可以确定目标设备不具有针对外部存储空间的写权限。

一个可选的实施例中,若确定不具有针对外部存储空间的写权限,则可以根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。

另一个可选的实施例中,若确定具有针对外部存储空间的写权限,则目标设备可以根据目标字符串,以及目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。其中,目标字符串为按照预设规则生成的字符串。

一个实施例中,目标设备可以随机选择预设数量的字符串,并对选择得到的预设数量的字符串进行拼接,得到上述目标字符串。目标设备根据该目标字符串,以及上述目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。

例如,随机选取的预设数量的字符串为a、b和c。根据a、b和c,生成的目标字符串为abc。目标设备根据目标字符串,以及上述目标设备的硬件序列号、设备品牌和设备型号,生成的目标id可以表示为:硬件序列号-abc-设备品牌-设备型号、硬件序列号-设备品牌-abc-设备型号或硬件序列号-abc-设备品牌-abc-设备型号。

另一个实施例中,目标设备可以随机选择预设数量的字符串作为目标字符串。目标设备可以根据预设数量的目标字符串,以及上述目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。

例如,预设数量的目标字符串为a和b,目标设备根据预设数量的目标字符串,以及上述目标设备的硬件序列号、设备品牌和设备型号,生成的目标id可以表示为:硬件序列号-a-设备品牌-b-设备型号、硬件序列号-b-设备品牌-a-设备型号或硬件序列号-a-b-设备品牌-设备型号等。

在本发明实施例中,对上述预设数量以及目标字符串不作具体限定。

上述初始id、预设标识、硬件序列号、设备品牌和设备型号为目标设备的标识信息。目标设备的标识信息为在不主动向目标设备获取权限的情况下,目标设备可以获取到的标识信息。根据每一目标设备中的权限设置情况进行变更。在本发明实施例中,对目标设备的标识信息不作具体限定。

通过在生成的目标id中增加目标字符串,可以降低不同目标设备中生成的目标id的碰撞率。

基于同一种发明构思,在上述图1所示的id生成方法的基础上,本发明实施例还提供了一种id获取方法。具体如图3所示,图3为本发明实施例提供的id获取方法第一种流程示意图。该方法包括以下步骤。

步骤s301,检测是否具有针对目标设备的外部存储空间的读权限。若否,则执行步骤s302。

在本步骤中,目标设备可以检测是否具有针对目标设备的外部存储空间的读权限。

关于读权限的检测方法可以参照上述写权限的检测方法,例如,目标设备可以从外部存储空间中读取预设文件,从而检测是否具有针对外部存储空间的读权限。在此对针对目标设备的外部存储空间的读权限不作具体说明了。

步骤s302,确定目标设备中是否安装有预设应用。其中,预设应用中包括用于获取设备的设备id的目标端口。若是,则执行步骤s303。

在本步骤中,若检测到不具有针对外部存储空间的读权限,则可以确定目标设备中是否安装有预设应用。

在本发明实施例中,上述预设应用为集成了软件开发工具包(softwaredevelopmentkit,sdk)的应用。在预设应用的sdk中包括有获取设备的设备id的目标端口以及服务端维护的sdk白名单。目标设备可以针对每一已安装应用,判断该已安装应用中是否集成了sdk,并筛选出集成了sdk的已安装应用。目标设备可以将筛选出的已安装应用的标识信息发送给服务端,由服务端可以根据接收到的标识信息对sdk白名单进行更新,得到新的sdk白名单。一个实施例中,可以根据目标设备的已安装应用中是否集成了sdk,确定目标设备中是否安装有预设应用。另一个实施例中,可以根据sdk白名单,确定目标设备中是否安装有预设应用。在本发明实施例中,对上述预设应用的确定方法不作具体限定。

一个可选的实施例中,若检测到具有针对外部存储空间的读权限,则可以获取目标设备的外部存储空间中存储的设备id,作为目标设备的目标id。

一个实施例中,在检测到具有针对外部存储空间的读权限时,目标设备可以从上述外部存储空间的特定存储目录中获取得到该目标设备的目标id。

通过在检测到目标设备是否具有针对外部存储空间的读权限,可以在具有针对外部存储空间的读权限时,直接从外部存储空间中读取得到目标设备的设备id,作为目标设备的目标id,提高了目标id的获取效率。

一个可选的实施例中,在目标设备的使用过程中,由于用户某些不可预期的操作行为,可能会使得外部存储空间中存储的目标id发生变更,或者出现错误。为了提高从目标设备的外部存储空间中获取到的目标id的准确性,在获取外部存储空间中存储的设备id,作为目标设备的目标id时,目标设备可以获取外部存储空间中存储的设备id,并对所获取的设备id进行防篡改校验。若校验通过,则目标设备可以确定获取到的设备id为目标设备的目标id。若校验未通过,则目标设备可以确定获取到的设备id不是目标设备的目标id,目标设备可以执行步骤s303。在此,对获取到的设备id的防篡改校验过程不作具体说明了。

步骤s303,基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

在本步骤中,若确定目标设备中安装有上述预设应用,目标设备可以在预设应用和目标设备中安装的其他应用之间建立进程间通信,使得该其他应用可以从预设应用包括的目标端口中获取得到目标设备的目标id。

一个可选的实施例中,当目标设备中安装的预设应用的数量至少包括两个时,目标设备可以根据每一预设应用的优先级,选择优先级最高的预设应用与上述其他应用建立进程间通信,从预设应用的目标端口中获取目标设备的目标id。

一个实施例中,在上述sdk白名单中包含有每一预设应用的优先级。目标设备将预设应用与其他应用进行进程间通信时,目标设备可以根据存储的sdk白名单中每一预设应用的优先级,确定目标设备中安装的多个预设应用中优先级最高的预设应用,并采用该预设应用与其他应用进行进程间通信。

在本发明实施例中,上述预设应用的优先级可以该预设应用对应的体量和用户量等进行设定。在此,对预设应用的优先级不作具体限定。

上述预设应用的目标端口中存储的目标id,以及目标设备的内部存储空间和外部存储空间中存储的目标id的相同的。

综上所述,通过本发明实施例提供的方法,可以在没有针对外部存储空间的读权限的情况下,通过进程间通信的方式,从预设应用中包括的获取设备id的端口中获取得到设备的设备id,使得在不主动向设备请求权限的情况下,获取得到设备中存储的设备id。

一个可选的实施例中,在上述步骤s302,确定目标设备中是否安装有预设应用的步骤中,可以包括以下步骤。

步骤s3021,判断目标设备的已安装应用列表中是否包括预设应用的标识,其中,已安装应用列表中包括已安装应用的标识。若是,则执行步骤s3022。若否,则执行步骤s3023。

在本步骤中,可以获取目标设备的已安装应用列表,并将目标设备中已安装应用的标识与预设应用的标识进行比较,从而判断目标设备中已安装应用的标识中是否包括预设应用的标识,也就是判断目标设备已安装应用列表中是否包含预设应用。

一个实施例中,目标设备可以检测是否具有针对已安装应用列表的读权限。若具有针对目标设备已安装应用列表的读权限,则目标设备可以读取该已安装应用列表。目标设备将预设应用的标识与读取到的已安装应用列表中每一应用的标识进行比较,判断目标设备的已安装应用列表中是否包括预设应用的标识。

步骤s3022,确定目标设备中安装有预设应用。

在本步骤中,若确定目标设备的已安装应用列表中包括预设应用的标识,则可以确定该目标设备中安装有预设应用。

步骤s3023,确定目标设备中未安装有预设应用。

在本步骤中,若确定目标设备的已安装应用列表中不包括预设应用的标识,则可以确定目标设备中未安装有预设应用。

通过直接读取目标设备的已安装应用列表,目标设备可以更加快速准确的判断出目标设备中是否安装有预设应用,提高了判断的准确性以及效率。

一个可选的实施例中,由于不同厂商对目标设备中的权限设定的不同,使得在部分目标设备中,用户可以设定对目标设备的已安装应用列表的读权限。另外,在目标设备对目标设备中已安装应用进行遍历时,目标设备不需要具有对应的权限。因此,在目标设备不具备针对已安装应用列表的读权限时,为了提高对目标设备是否安装预设应用判断的准确性。当目标设备不具有针对已安装应用列表的读权限时,上述步骤s302,确定目标设备中是否安装有预设应用的步骤可以表示为:

针对上述sdk白名单中的每一预设应用,按照优先级由高到低的顺序,逐一根据预设应用的标识,查找目标设备中是否安装有该预设应用,进而确定目标设备中是否安装有预设应用。

以上述sdk白名单中包括的预设应用为应用a、应用b和应用c为例进行说明。若应用a的优先级高于应用b的优先级,应用b的优先级高于应用c的优先级。目标设备可以根据应用a的标识,如应用a对应的数据包的包名,检测目标设备中是否存在相同标识的应用。若检测到存在相同标识的应用,则目标设备可以确定安装有应用a,即预设应用。若未检测到存在相同标识的应用,则目标设备可以确定未安装有应用a。以此类推,分别检测目标设备中是否安装有应用b和应用c,进而确定目标设备中是否安装有预设应用。

一个可选的实施例中,根据图3所示的id获取方法,本发明实施例还提供了一种id获取方法。具体如图4所示,图4为本发明实施例提供的id获取方法的第二种流程示意图。该方法包括以下步骤。

步骤s401,检测是否具有针对目标设备的外部存储空间的读权限。若否,则执行步骤s402。

步骤s402,确定目标设备中是否安装有预设应用。其中,预设应用中包括用于获取设备的设备id的目标端口。若是,则执行步骤s403。若否,则执行步骤s404。

步骤s403,基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

上述步骤s401-步骤s403与上述步骤s301-步骤s303相同。

步骤s404,获取目标设备的标识信息。

在本步骤中,若目标设备中未安装有预设应用,则可以获取该目标设备的标识信息。其中,该标识信息可以包括上述初始id、预设标识、硬件序列号、设备品牌和设备型号等。

步骤s405,根据标识信息,生成目标设备的目标id。

在本步骤中,目标设备可以根据获取到的标识信息,生成目标设备的设备id。关于目标id的生成方法可以参照图1提供的id生成的方法,在此不作赘述。

步骤s406,将目标id存储到目标设备的内部存储空间以及外部存储空间中。

在本步骤中,目标设备可以将生成的目标id存储到目标设备的内部存储空间和外部存储空间中,使得在下一次需要获取目标设备的设备id时,可以从目标设备的内部存储空间和外部存储空间中获取得到目标id,提高目标id的获取效率。

相比现有设备id获取过程中,没有对sd卡的读权限时,直接生成设备id。本发明实施例提供的id获取方法中,目标设备在不主动向目标设备请求权限的情况下,只有当目标设备中未安装有预设应用时,目标设备才会生成目标设备的设备id,使得目标设备在设备id获取过程中,生成的设备id的唯一性和稳定性有明显的提高。

一个可选的实施例中,随着技术的不断发展,每一应用程序将会被不断的更新,这使得目标设备中安装的预设应用也在不断的变更。为了使得目标设备可以准确的确定出目标设备中是否安装有预设应用。目标设备可以检测上述已安装应用是否包括上述目标端口。若检测到该已安装应用中包括目标端口,则将已安装应用确定为预设应用,提高预设应用的准确性。具体可以通过以下方式实现。

具体的,针对目标设备中每一已安装应用,目标设备可以按照预设时间间隔,检测该已安装应用是否包括获取目标设备的设备id的目标端口。若检测到该已安装应用包括目标端口,则目标设备可以向服务端发送该已安装应用的标识信息,使得服务端对上述sdk白名单进行更新。

一个可选的实施例中,根据图3所示的id获取方法,本发明实施例还提供了一种id获取方法。具体如图5所示,图5为本发明实施例提供的id获取方法的第三种流程示意图。该方法可以包括以下步骤。

步骤s501,检测目标设备的内部存储空间中是否存在目标设备的目标id。若否,执行步骤s502。

步骤s502,检测是否具有针对目标设备的外部存储空间的读权限。若否,则执行步骤s503。若是,则执行步骤s504。

步骤s503,确定目标设备中是否安装有预设应用,其中,预设应用中包括用于获取设备的设备id的目标端口;

步骤s504,基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

上述步骤s502-步骤s504与上述步骤s301-步骤s505相同。

在上述步骤s501中,目标设备的内部存储空间可以为目标设备的内部存储空间,也可以为目标设备中已安装应用的内存,还可以为目标设备中已安装应用的私有存储目录。针对不同的内部存储空间,目标设备可以采用不同的方式获取内部存储空间中的数据。

以安卓设备为例进行说明。一个实施例中,若目标设备的内部存储空间为已安装应用的内部存储空间,即该已安装应用的本地缓存,则目标设备可以直接从该内部存储空间中获取存储的目标id。另一个实施例中,若目标设备的内部存储空间为已安装应用的私有存储目录,则目标设备可以通过内容提供者(contentprovider)和内容解析者(contentresolver)处理,从该安装应用的私有存储目录中获取得到存储的目标id。

在本发明实施例中,目标设备的目标id是可以存储在目标设备的内部存储空间和外部存储空间中。由于目标设备直接从内部存储空间中获取目标id的速度要明显快于从外部存储空间中获取目标id的速度。因此,若目标设备的内部存储空间中存在目标id,则目标设备可以直接从内部存储空间中获取目标设备的目标id,缩短目标id获取过程耗费的时间,提高设备id获取的效率。

基于同一种发明构思,根据上述发明实施例提供的id获取方法,本发明实施例还提供了一种id获取装置。具体如图6所示,图6为本发明实施例提供的id获取装置的一种结构示意图。该装置包括以下模块。

第一检测模块601,用于检测是否具有针对目标设备的外部存储空间的读权限。

第一确定模块602,用于在第一检测模块601的检测结果为否时,确定目标设备中是否安装有预设应用,预设应用中包括用于获取设备的设备id的目标端口。

第一获取模块603,用于在第一确定模块602的确定结果为是时,基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

可选的,上述id获取装置还可以包括:

第二检测模块,用于检测目标设备的内部存储空间中是否存在目标设备的目标id;若第二检测模块的检测结果为否,则执行检测是否具有针对目标设备的外部存储空间的读权限的步骤。

可选的,上述id获取装置还可以包括:

第二获取模块,用于在第一检测模块601的检测结果为是时,获取外部存储空间中存储的设备id,作为目标设备的目标id。

可选的,上述第二获取模块,具体可以用于获取外部存储空间中存储的设备id;对所获取的设备id进行防篡改校验;若校验通过,则确定设备id为目标设备的目标id。

可选的,上述第一确定模块602,具体可以用于判断目标设备的已安装应用列表中是否包括预设应用的标识,已安装应用列表中包括已安装应用的标识;若包括预设应用的标识,则确定目标设备中安装有预设应用;若不包括预设应用的标识,则确定目标设备中未安装有预设应用。

可选的,上述id获取装置还可以包括:

第三获取模块,用于在第一确定模块602的确定结果为否时,获取目标设备的标识信息。

第一生成模块,用于根据标识信息,生成所目标设备的目标id。

存储模块,用于将目标id存储到目标设备的内部存储空间以及外部存储空间中。

可选的,上述第一生成模块,具体可以用于确定目标设备的操作系统版本是否为预设操作系统版本;若是预设操作系统版本,则根据目标设备的初始id、设备品牌和设备型号,生成目标设备的目标id;若不是预设操作系统版本,则将目标设备中包括的预设标识作为目标设备的目标id。

可选的,上述id获取装置还可以包括:

第二生成模块,用于当目标设备中不包括预设标识时,根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id。

可选的,上述id获取装置还可以包括:

第三检测模块,用于检测目标设备是否具有针对外部存储空间的写权限;

上述第二生成模块,具体用于在第三检测模块的检测结果为否时,根据目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id;在第三检测模块的检测结果为是时,根据目标字符串、目标设备的硬件序列号、设备品牌和设备型号,生成目标设备的目标id,其中,目标字符串为按照预设规则生成的字符串。

通过本发明实施例提供的装置,可以在没有针对外部存储空间的读权限的情况下,通过进程间通信的方式,从预设应用中包括的获取设备id的目标端口中获取得到设备id,这可以在不主动向设备请求权限的情况下,获取得到设备id,提高了获取设备id的有效性。

基于同一种发明构思,根据上述发明实施例提供的id获取方法,本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信;

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:

检测是否具有针对目标设备的外部存储空间的读权限;

若不具有针对外部存储空间的读权限,则确定目标设备中是否安装有预设应用,预设应用中包括用于获取设备的设备id的目标端口;

若安装有预设应用,则基于预设应用与目标设备中安装的其他应用之间的进程间通信,从目标端口获取目标设备的设备id为目标id。

通过本发明实施例提供的电子设备,可以在没有针对外部存储空间的读权限的情况下,通过进程间通信的方式,从预设应用中包括的获取设备id的目标端口中获取得到设备id,这可以在不主动向设备请求权限的情况下,获取得到设备id,提高了获取设备id的有效性。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

基于同一种发明构思,根据上述发明实施例提供的id获取方法,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一id获取方法的步骤。

基于同一种发明构思,根据上述发明实施例提供的id获取方法,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一id获取方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1