CN104104743A - 一种基于Android系统自动获取手机号码的方法及装置 - Google Patents
一种基于Android系统自动获取手机号码的方法及装置 Download PDFInfo
- Publication number
- CN104104743A CN104104743A CN201410224844.4A CN201410224844A CN104104743A CN 104104743 A CN104104743 A CN 104104743A CN 201410224844 A CN201410224844 A CN 201410224844A CN 104104743 A CN104104743 A CN 104104743A
- Authority
- CN
- China
- Prior art keywords
- network
- data
- submodule
- phone number
- sim card
- 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.)
- Granted
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提出了一种Android系统自动获取手机号码的方法及装置,由客户端模块和解析服务器两部分组成,所述的客户端模块包括接口调用子模块、获取数据子模块、硬件数据获取子模块、检测网络子模块、设置网络子模块。能够用于解决繁琐的用户注册模式,并为应用程序提供准确的标识等功能。
Description
技术领域
本发明主要用于基于Android系统的应用产品中为客户提供获取手机号码功能的领域,涉及需要将手机号码作为标识或作为业务数据的各种应用产品中。
背景技术
随着移动信息化技术的进步和中国电信3G业务的快速发展,移动信息技术走进了人们的工作和生活之中。通过掌上终端、PDA、手机等移动设备,以电信、互联网通讯技术融合的方式,人们可以随时随地进行随身的移动化信息生活和工作。
与国内3G业务发展的同时,Google公司推出了一个开源的智能终端平台Android,多家终端设备厂商都能够使用这个开源平台进行自己的智能设备的开发。这样大大降低了设备商对于设备的开发成本和开发周期。谷歌在开源android的同时也开放了android API,开发的核心语言是程序员熟悉的java,因此对于很多传统的程序员来说,开发门槛较低,能从j2EE或者j2ME迅速转型。因此,越来越多的开发者进入了移动互联网软件的设计和研发的领域中,其中出现了很多优秀的应用软件和优异的应用软件开发公司。与此同时,Google公司发布了自己的应用软件市场。相对于Apple公司的网上商店来说,Google公司的应用软件市场更加的开发、友好、容易开发者进入。因此,Android领域的各个方面都有了一个良好的发展环境,得到了快速的发展,甚至已经触动甚至超过了Apple公司领头羊的地位。
Android应用产品百花齐放,用户能够获取各自所需的各种产品。对于Android应用产品开发者来说,对每一位用户进行唯一标识并方便用户操作,提供自动化的各种服务来吸引住客户。其中,各个应用产品自动去获取用户手机号码,方便其注册和使用是一个非常普遍和通用的方法。但是,国内的电信运营商的模式是机卡分离的,而且在发行手机卡时也没有将手机号码写入到卡上。这样就造成了Android应用产品开发者无法通过Android API直接获取到用户的手机号码等标识。因此,有众多产品开发者为用户提供了其他的模式来唯一标识和追踪用户,譬如提供用户注册和登陆模块。
本发明为了解决以上繁琐的用户注册模式,并为应用程序提供准确的标识等功能,提出了一种Android系统自动获取手机号码的方法及装置。
发明内容
国内电信运营商3G业务的快速发展,促进了中国移动互联网领域的迅速发展,Android或者iOS等智能终端得到了大量的普及和使用。因此,国内的移动应用程序也如雨后春笋般的快速涌现。个人数据的查看和操作,是各种应用程序的灵魂。但现今多种应用程序都提供新用户注册、用户登录的模式,供用户使用。这种通用的模式存在以下几点问题:
(1)新用户注册、用户登录对于用户来说,是比较繁琐的操作步骤。用户在新接触到一款应用程序时的第一印象非常重要。往往,第一印象决定了用户对于应用的喜好程度,甚至决定了该用户是否会继续或者长期使用该应用程序。而新用户注册、用户登录的步骤对于用户来说,是比较繁琐复杂的一个过程。用户需要在显示屏幕不大的智能终端的完成注册和登陆的过程。尤其是对于很多中老年或者不会输入文字的用户来说,更是一道门槛。这样将众多的用户拒之门外。
(2)新用户注册、用户登录、检测注册号码是否可用等操作对于应用程序的开发者来说,也是比较复杂的过程。开发者需要设计并研发出友好的用户界面,能够是所有用户都理解和掌握界面上的内容和使用发放。这对于开发者来说,需要花费一部分设计和研发的时间和工作。而这部分虽然不是应用程序最核心的内容,但确实其业务逻辑的一个重要的组成部分,甚至说是一个开发者开发过程中的鸡肋。
(3)随着智能终端的大量生产和推广,其拥有量也达到了一个新的高度。智能终端已不再是一个奢侈品,而是一个普通电器,甚至众多用户拥有超过一台设备或频繁的更换新的众多设备。这样用户也需要在不同的设备上进行使用时,需要再一次地进行登陆等操作,无疑增加了用户的操作步骤。
基于以上几点因素,本发明提出一种基于Android系统自动获取手机号码的方法及装置。开发者使用该方法和装置,可以减少新用户注册、用户登录等繁琐的用户操作,同时也不需要再进行相应模块的设计和研发工作,同时还使得其应用程序能够在更换终端设备时也不需要做相应的操作。无论是用户,还是开发者,本文提出的方法及装置都能够起到了减少操作和时间的作用。
实现本发明目的的具体技术方案如下:
一种基于Android系统自动获取手机号码的装置,由客户端模块和解析服务器两部分组成,
所述的客户端模块包括接口调用子模块、获取数据子模块、硬件数据获取子模块、检测网络子模块、设置网络子模块;
所述的接口调用子模块与获取数据子模块连接,用于在收到应用程序发来的调用请求后记录应用程序的回调接口,触发获取数据子模块工作,接收获取数据子模块获得的手机号码送入回调接口;
所述的获取数据子模块还与硬件数据获取子模块及检测网络子模块连接,且与解析服务器无线连接,用于与解析服务器通讯并解析其返回的结果;
所述的硬件数据获取子模块与获取数据子模块、手机硬件信息模块、SIM卡及设置网络子模块连接:
当硬件数据获取子模块被获取数据子模块启动时,硬件数据获取子模块用于从手机硬件信息模块获取手机硬件号码字段和从SIM卡上获取SIM卡号字段数据,并将其发送给获取数据子模块;
当硬件数据获取子模块被设置网络子模块启动时,硬件数据获取子模块用于从SIM卡上获取SIM卡号字段数据,并将其发送给设置网络子模块;
所述的检测网络子模块与获取数据子模块、手机网络终端、用户提示模块、设置网络子模块连接,用于在被获取数据子模块启动后检测手机网络终端的网络状态,根据其状态或发送相应状态给用户提示模块,使其给用户发送提示信息,或向获取数据子模块发出指令,使其向解析服务器请求数据,或启动设置网络子模块;
所述的设置网络子模块与检测网络子模块、硬件数据获取子模块、获取数据子模块及手机网络模块连接,用于将当前手机网络终端的网络类型切换至运营商Wap连接状态;
所述的解析服务器用于收到客户端模块的获取数据子模块发来的SIM卡号数据及获取手机号码的请求后将SIM卡号数据解析成手机号码,将手机号码按照一定格式组成返回结果发送给客户端模块的获取数据子模块。
一种基于Android系统自动获取手机号码的方法,由以下“接口调用的步骤”、“获取手机号码的步骤”、“检测网络的步骤”、“设置网络的步骤”、“解析SIM卡号数据的步骤”实现:
接口调用的步骤:在收到应用程序发来的调用请求后记录应用程序的回调接口,进入获取手机号码的步骤,接收获取到手机号码后送入回调接口;
获取手机号码的步骤:包括启动解析SIM卡号数据的步骤及在收到手机号码后解析手机号码的步骤,
启动解析SIM卡号数据的步骤如下:
向解析服务器发送获取手机号码的请求,
A:如果在返回结果的时间间隔内解析服务器没有响应,则直接返回失败结果,
B:如果获取到解析服务器返回的结果,便对结果进行解析;
所述解析手机号码的步骤如下:
(4)检测本地数据库是否存在,若不存在新建本地数据库及本地数据库中的表格;
(5)若本地数据库存在,则从中获取手机硬件号码字段、SIM卡号字段、手机号码字段的数据:
若数据全为空,则进入检测网络的步骤,
若数据不为空,查看手机号码字段:
A:若手机号码字段为空,则进入检测网络的步骤;
B:若手机号码字段存在,则获取的手机硬件号码数据和SIM卡号数据;
(6)将手机硬件号码数据和SIM卡号数据与本地数据库中相应字段数据进行比对:
若比对结果一致或无需比对(在首次解析的情况下本地数据库中相应字段全为空,此时无需比对)则将获得的手机号码、手机硬件号码、SIM卡号及获取时间的数据存入到本地数据库相应的字段中,并将手机号码字段对应的手机号码数据返回给回调接口;
若比对结果不一致,则进入检测网络的步骤;
检测网络的步骤如下:
检测手机网络终端的网络是否为无线网络接通状态:
(1)若不是则将相应结果返回给用户提示模块,用户提示模块收到后向用户发送开启网络至无线网络状态的提示信息;
具体为:
检测手机网络终端的网络是否可达:
A:若网络不可达则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
B:若网络可达则检测手机网络终端的网络是否为Wifi连接状态,若是则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
(2)若是则检测此时手机网络终端所连接的网络类型:
A:若网络类型为运营商Wap连接状态,则进入获取手机号码的步骤;
B:若网络类型为互联网Net状态,则进入设置网络的步骤;
设置网络的步骤如下:
第一步,检测手机是否已设置到了初始网络状态:
(1)若是则进入下一步;
(2)若不是则从SIM卡上获取SIM卡号字段数据,得到数据后判断当前手机属于国内哪一家运营商,接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口数据设置到手机网络模块上,此刻手机网络模块即已设置到了初始网络状态;
第二步,根据手机上的连接用户名、密码、代理地址、代理端口的数据对运营商的Wap网络进行测试,
(1)若测试成功则说明网络类型已切换至运营商Wap连接状态;
(2)若测试不成功则检测当前测试次数是否大于系统限制的最大次数,
A:若未超过最大次数则重新根据手机上的连接用户名、密码、代理地址、代理端口信息对运营商的Wap网络进行测试;
B:若已超过最大次数则返回到设置网络的步骤的第一步;
解析SIM卡号数据的步骤如下:
收到获取手机号码的请求及SIM卡号后将SIM卡号数据解析成手机号码,将其按照一定格式组成返回结果发送给回调接口。
本发明提出基于Android系统自动获取手机号码的方法及装置,由客户端模块和解析服务器模块两部分组成。
客户端模块用于Android智能系统中。通常,该模块被嵌入到开发者的终端应用程序中。客户端模块提供多个接口供开发者的应用程序调用,主要包括接口调用子模块、检测网络子模块、硬件数据获取子模块、本地数据库子模块、设置网络子模块、获取数据子模块。客户端模块主要为开发者应用程序提供了网络检测、硬件数据存取、设置网络、获取数据以及数据存储等功能。通过以上几个子模块内部协同工作以及后台通讯等工作,为应用程序提供了一种自动获取到手机号码的运行机制。
解析服务器模块位于远程服务器中。该模块被设计成通用运行模式,可以独立占用一个服务器被使用,也可以被嵌入到开发者的后台应用系统中,这样便减少了后台服务的嵌入、迁移和部署等工作量。解析服务器模块包括获取数据子模块、解析数据子模块以及返回数据子模块。通过这三个子模块的工作,自动接收客户端模块发来的请求,通过数据解析后快速地将所需数据返回给客户端模块。
本发明的有益效果:
现今,很多智能终端软件仍然使用用户注册和登陆机制,无论对于用户还是开发者来说,都是一个非常繁琐的过程。而本发明提出了一种基于Android系统自动获取手机号码的方法及装置,为用户和开发者都减少了这一系列的繁琐的操作或者开发的过程。对于用户来说,使用本发明装置,在初次使用时就不在需要进行新用户注册、验证、登陆等操作,就能够以唯一的用户进行登陆。对于开发者来说,将本发明装置嵌入到应用软件中,在保持原有应用业务和逻辑的同时,能够减少了设计和开发的工作量,提升开发效率。再者,本发明只依赖于网络,而不会涉及到个人其他隐私的获取和泄露,对于开发者来说更加的放心。
附图说明
图1为本发明系统架构;
图2为本发明系统结构与模块;
图3为本发明的运行机制;
图4为监测网络子模块运行机制;
图5为设置网络子模块运行机制。
具体实施方式
下面将结合附图对本发明中的各个模块以及各模块间的运行机制进行具体说明。
客户端模块中接口调用子模块为开发者的应用程序提供可以调用的模块。接口调用子模块主要负责应用程序发来的调用请求,记录应用程序的回调接口。接着转入到客户端模块的内部运行机制中,触发获取手机号码工作。应用程序在需要获取手机号码时,只需要直接调用接口调用子模块所提供的接口,便完成了接口调用的请求。接着,应用程序不需要再关心此次调用,可以去做其他事情,当客户端模块获取到手机号码后,再发送给应用程序。这种异步调用的方式,为应用程序提供了一个透明的工作,减少了应用开发程序的工作量。同时,这种方式释放了应用程序,使其可以去做自己的事情,从而更好地服务用户,提供良好的用户感知。
客户端模块中检测网络子模块主要工作是检测用户手机当时所处的网络环境。智能手机通常有多个网络状态:Wifi状态、互联网Net和运营商Wap状态等。检测网络子模块对用户手机进行检测,并返回网络状态。该网络状态对于本发明非常重要。因为本发明中获取手机号码等工作需要在运营商Wap网络状态下获取。因此,准确分析手机的网络状态对于下面获取手机号码等工作非常重要。同时,检测网络子模块对于应用程序来说,也没有占用任何网络资源和带宽。
客户端模块中手机硬件信息模块用于存储客户端模块所需要的数据信息,主要包括当前手机的硬件号码(IMEI或者MEID)、SIM卡上数据(IMSI)、手机号码、获取时间等信息。手机硬件号码IMEI或者MEID是每一台手机的唯一标识码。SIM卡上的IMSI是移动用户所分配的唯一号码。以上数据信息中,手机硬件号码和SIM卡上数据在本发明中是比较重要的数据。
客户端模块中硬件数据获取子模块负责获取当前手机的硬件号码(IMEI或者MEID)、SIM卡上数据(IMSI)、手机号码、获取时间等信息。手机硬件号码IMEI或者MEID是每一台手机的唯一标识码。在每一次应用程序获取手机号码之前,客户端模块都会调用该模块对本地数据库中的字段进行获取。如果本地数据库中手机号码字段数据不存在,再返回给客户端模块相应的信息;如果本地数据中手机号码字段存在,则继续将手机硬件号码、SIM卡上数据获取出来,与现实环境中的相应数据进行比对,如果一致,说明数据库中手机号码字段有效,如果不一致则说明手机号码字段无效,并返回相应信息给客户端模块。
客户端模块中设置网络子模块是比较复杂的模块,主要功能是对智能手机当前连接的网络进行更改设置。本发明中,该模块可以将网络互联网Net切换到运营商Wap中,也可以从运营商Wap切换到互联网Net中。设置网络子模块在两种网络中切换是一个比较耗时的过程,尤其是针对各种不同品牌的手机和不同的运营商类型的网络。同时,该子模块还需要在一定时间间隔内对网络状态进行检测。当检测到网络切换成功后,会快速的结束设置的内容,返回到客户端模块中的其他子模块中,以减少耗时、加快功能执行速度。当为检测到网络切换成功时,该子模块会在设定好的一个较为适中的时间段内继续尝试设置网络。如果超过了该模块最大设置次数,该模块便直接返回结果,以防浪费更多的资源和时间在此模块中。
客户端中获取数据子模块负责在网络状态设置完成后,向解析服务器发送相关数据和请求,并等待解析服务器返回最终的结果。
解析服务器模块中获取数据子模块负责获取客户端中发送过来的相关数据和请求,并将所有的请求数据存放在请求对象中,然后将请求对象发送给解析服务器模块中解析数据子模块。
解析服务器模块中解析数据子模块在获取数据子模块调用后被唤醒,并获取到相应的请求对象。接着,解析数据子模块对请求对象进行数据解析和分析,逐个解析请求对象中的各个字段和数据。然后解析数据子模块从其中查找出与手机号码相关的字段,以及解析数据子模块主要关注的一些数据字段,例如“HTTP_X_Up_Calling_line_ID”、“http_x-up-subno”、“x-up-calling-line-id”等,进行各个字段的分析,从而获取到真实的手机号码。因为智能手机连接的移动运营商网络有所不同,所以手机号码字段在请求对象中可能存在于不同的字段中。因此解析数据子模块的主要工作就是能够剔除运营商网络类型不同,终端手机品牌不同等因素,从其中获取到真实的手机号码字段。当获取到真实手机号码后,解析数据子模块将数据请求发送给下一个模块,即返回数据子模块。
解析服务器模块中返回数据子模块获取到手机号码后,将字段按照一定格式组成返回结果,并发送给客户端中的数据子模块,便完成一次数据解析工作。
下面将结合附图1对本发明中的客户端模块的运行机制进行具体说明。
首先,开发人员将本发明的客户端模块通过import模式嵌入到其应用程序代码的项目工程中,编译成功后便可以调用本发明的获取本地手机号码的调用接口。在调用本发明的接口的同时,应用程序需要将其监听函数对象也传递给本发明的调用接口。这样,应用程序不再需要等待结果,可以去做其他的处理,提高了应用程序的执行效率。
当本发明客户端模块中的调用接口被调用后,本发明装置便开始工作起来。首先,客户端模块将应用程序传递的监听函数对象存放起来。接着,获取数据子模块便启动工作。获取数据子模块先检测本地应用中是否已存在自己的本地数据库。如果没有本地数据库,说明应用程序是首次调用,便为其新建本地数据库及数据库中的各个表格。如果检测到已经存在本地数据库,则打开数据库,从其中的表中获取到手机硬件号码字段和SIM卡、手机号码等字段的数据。如果数据全为空,则表示先前没有进行字段获取和存储工作,发出重新获取手机号码指令,调用检测网络子模块。如果数据不为全空,首先查看手机号码字段,如果该字段为空,同样发出重新获取手机号码指令。如果该字段存在,则调用硬件数据获取子模块。从硬件数据获取子模块返回的手机硬件号码数据和SIM卡数据,并将这些字段与数据库中的相应字段进行比对,如果数据都一致,说明该应用已经调用过本发明并已经获取到该SIM卡的手机号码。这时,便将该手机号码直接返回给接口调用子模块,使接口调用子模块直接将手机号码快速地返回给应用程序。如果数据不一致,则说明用户有可能已经更换过SIM卡,则继续发出重新获取手机号码指令,调用检测网络子模块。
如图4所示,检测网络子模块收到指令后,首先检查手机网络是否已经接通,如果网络不可达则返回相应结果。如果网络可达,则继续检测Wifi是否连接,如果Wifi开启,则返回相应结果。如果未开启,则返回数据网络连接状态的结果。检测完成后,如果网络并未开启或者Wifi连接则返回个客户端模块相应状态,提示用户去做相应的网络状态修改。如果网络出于无线网络接通状态后,检测网络子模块检测终端所连接的网络类型。如果此时网络为运营商Wap连接状态下,则直接向获取数据子模块发出指令,使其向解析服务器请求数据。如果网络连接为互联网Net状态下,则向设置网络子模块发出切换网络至运营商Wap状态。
如图5所示,设置网络子模块被调用后,首先判断是否为将网络设置到初始网络状态。如果不是,调用硬件数据获取模块获取SIM卡上的相关数据,得到数据后判断当前手机属于国内那一家运营商。接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口等数据设置到手机上。设置完成后,根据各运营商Wap网络地址对运营商的Wap网络进行测试,如果设置成功,则将设置结果发送给获取数据子模块。如果设置未成功,则根据当前设置次数和系统限制的最大次数,重新进行设置。如果未超过最大设置,则重新尝试再次设置网络。如果已超过最大设置,则直接将设置结果返回。如果判断为将网络设置为初始网络状态,则将网络设置为初始网络后,返回结果。
如果网络设置成功,获取数据子模块将向解析服务器发送获取手机号码请求,等待解析服务器返回结果。如果在返回结果的时间间隔内解析服务器没有响应,则直接返回失败结果。如果获取到解析服务器返回的结果,便对结果进行解析,如果是手机号码则返回结果,如果不是手机号码,则返回失败结果。
获取数据子模块完成后,便重新发送设置网络为初始网络指令到设置网络模块。设置完成后,如果获取到的手机号码为成功的结果,则将获得的手机号码以及手机硬件号码、SIM卡上数据、获取时间等数据存入到本地数据库中。最终将手机号码结果返回给应用程序的回调函数中。
至此,本发明的各个模块及其子模块的运行机制结束。
本发明具体技术方案举例如下:
一种基于Android系统自动获取手机号码的装置,其特征在于:由客户端模块和解析服务器两部分组成。
客户端模块:
所述的客户端模块包括接口调用子模块、获取数据子模块、硬件数据获取子模块、检测网络子模块、设置网络子模块。
接口调用子模块:
接口调用子模块与获取数据子模块连接,用于在收到应用程序发来的调用请求后记录应用程序的回调接口,触发获取数据子模块工作,接收获取数据子模块获得的手机号码送入回调接口;
获取数据子模块:
获取数据子模块还与硬件数据获取子模块及检测网络子模块连接,且与解析服务器无线连接,用于与解析服务器通讯并解析其返回的结果;
获取数据子模块与解析服务器通讯的过程具体如下:
向解析服务器发送获取手机号码的请求,
A:如果在返回结果的时间间隔内解析服务器没有响应,则直接发送失败结果给接口调用子模块,
B:如果获取到解析服务器返回的结果,便对结果进行解析;
获取数据子模块解析返回结果的过程具体如下:
(1)检测本地数据库是否存在,若不存在新建本地数据库及本地数据库中的表格;
(2)若本地数据库存在,则从中获取手机硬件号码字段、SIM卡号字段、手机号码字段的数据:
若数据全为空,启动检测网络子模块
若数据不为空,查看手机号码字段:
A:若手机号码字段为空,启动检测网络子模块;
B:若手机号码字段存在,启动硬件数据获取子模块;
(3)将从硬件数据获取子模块返回的手机硬件号码数据和SIM卡号数据与本地数据库中相应字段数据进行比对:
若比对结果一致或无需比对(在首次解析的情况下本地数据库中相应字段全为空,此时无需比对)则将获得的手机号码、手机硬件号码、SIM卡号及获取时间存入到本地数据库相应的字段中,并将手机号码字段对应的手机号码数据发送给接口调用子模块;
若比对结果不一致,则启动检测网络子模块;
硬件数据获取子模块:
硬件数据获取子模块与获取数据子模块、手机硬件信息模块、SIM卡及设置网络子模块连接:
当硬件数据获取子模块被获取数据子模块启动时,硬件数据获取子模块用于从手机硬件信息模块获取手机硬件号码字段和从SIM卡上获取SIM卡号字段数据,并将其返回给获取数据子模块;
当硬件数据获取子模块被设置网络子模块启动时,硬件数据获取子模块用于从SIM卡上获取SIM卡号字段数据,并将其发送给设置网络子模块;
检测网络子模块:
检测网络子模块与获取数据子模块、手机网络终端、用户提示模块、设置网络子模块连接,用于在被获取数据子模块启动后检测手机网络终端的网络状态,根据其状态或发送相应状态给用户提示模块,使其给用户发送提示信息,或向获取数据子模块发出指令,使其向解析服务器请求数据,或启动设置网络子模块,具体如下:
检测手机网络终端的网络是否为无线网络接通状态:
(1)若不是则将相应结果发送给用户提示模块,用户提示模块收到后向用户发送开启网络至无线网络状态的提示信息;
具体为:
检测手机网络终端的网络是否可达:
A:若网络不可达则将相应结果发送给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
B:若网络可达则检测手机网络终端的网络是否为Wifi连接状态,若是则将相应结果发送给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
(2)若是则检测此时手机网络终端所连接的网络类型:
A:若网络类型为运营商Wap连接状态,则直接向获取数据子模块发出指令,使其向解析服务器发送SIM卡号数据及获取手机号码的请求。
B:若网络类型为互联网Net状态,则启动设置网络子模块。
设置网络子模块:
设置网络子模块与检测网络子模块、硬件数据获取子模块、获取数据子模块及手机网络模块连接,用于将当前手机网络终端的网络类型切换至运营商Wap连接状态,具体步骤如下:
第一步,检测手机网络模块是否已设置到了初始网络状态:
(1)若是则进入下一步;
(2)若不是则启动硬件数据获取子模块从SIM卡上获取SIM卡号字段数据,得到数据后判断当前手机属于国内哪一家运营商,接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口数据设置到手机网络模块上,此刻手机网络模块即已设置到了初始网络状态;
第二步,根据手机网络模块上的连接用户名、密码、代理地址、代理端口的数据对运营商的Wap网络进行测试,
(1)若测试成功则说明网络类型已切换至运营商Wap连接状态;
(2)若测试不成功则检测当前测试次数是否大于设置网络子模块限制的最大次数,
A:若未超过最大次数则重新根据手机网络模块上的连接用户名、密码、代理地址、代理端口信息对运营商的Wap网络进行测试;
B:若已超过最大次数则返回到第一步;
解析服务器:
包括数据获取子模块、解析数据子模块、返回数据子模块。
数据获取子模块:
用于收到客户端模块的获取数据子模块发来的SIM卡号数据及获取手机号码的请求后启动解析数据子模块并向其传送SIM卡号数据。
解析数据子模块:
用于将SIM卡号数据解析成手机号码,将其发送给返回数据子模块。
返回数据子模块:
将解析数据子模块发送来的手机号码按照一定格式组成返回结果发送给客户端模块的获取数据子模块。
其中,手机硬件信息模块、手机网络模块、手机网络终端都是手机本身的硬件模块。
本发明还涉及一种基于Android系统自动获取手机号码的方法,由以下“接口调用的步骤”、“获取手机号码的步骤”、“检测网络的步骤”、“设置网络的步骤”、“解析SIM卡号数据的步骤”实现:
接口调用的步骤:在收到应用程序发来的调用请求后记录应用程序的回调接口,进入获取手机号码的步骤,接收获取到手机号码后送入回调接口;
获取手机号码的步骤:包括启动解析SIM卡号数据的步骤及在收到手机号码后解析手机号码的步骤,
启动解析SIM卡号数据的步骤如下:
向解析服务器发送获取手机号码的请求,
A:如果在返回结果的时间间隔内解析服务器没有响应,则直接返回失败结果,
B:如果获取到解析服务器返回的结果,便对结果进行解析;
所述解析手机号码的步骤如下:
(4)检测本地数据库是否存在,若不存在新建本地数据库及本地数据库中的表格;
(5)若本地数据库存在,则从中获取手机硬件号码字段、SIM卡号字段、手机号码字段的数据:
若数据全为空,则进入检测网络的步骤,
若数据不为空,查看手机号码字段:
A:若手机号码字段为空,则进入检测网络的步骤;
B:若手机号码字段存在,则获取的手机硬件号码数据和SIM卡号数据;
(6)将手机硬件号码数据和SIM卡号数据与本地数据库中相应字段数据进行比对:
若比对结果一致或无需比对(在首次解析的情况下本地数据库中相应字段全为空,此时无需比对)则将获得的手机号码、手机硬件号码、SIM卡号及获取时间的数据存入到本地数据库相应的字段中,并将手机号码字段对应的手机号码数据返回给回调接口;
若比对结果不一致,则进入检测网络的步骤;
检测网络的步骤如下:
检测手机网络终端的网络是否为无线网络接通状态:
(1)若不是则将相应结果返回给用户提示模块,用户提示模块收到后向用户发送开启网络至无线网络状态的提示信息;
具体为:
检测手机网络终端的网络是否可达:
A:若网络不可达则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
B:若网络可达则检测手机网络终端的网络是否为Wifi连接状态,若是则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
(2)若是则检测此时手机网络终端所连接的网络类型:
A:若网络类型为运营商Wap连接状态,则进入获取手机号码的步骤;
B:若网络类型为互联网Net状态,则进入设置网络的步骤;
设置网络的步骤如下:
第一步,检测手机是否已设置到了初始网络状态:
(1)若是则进入下一步;
(2)若不是则从SIM卡上获取SIM卡号字段数据,得到数据后判断当前手机属于国内哪一家运营商,接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口数据设置到手机网络模块上,此刻手机网络模块即已设置到了初始网络状态;
第二步,根据手机上的连接用户名、密码、代理地址、代理端口的数据对运营商的Wap网络进行测试,
(1)若测试成功则说明网络类型已切换至运营商Wap连接状态;
(2)若测试不成功则检测当前测试次数是否大于系统限制的最大次数,
A:若未超过最大次数则重新根据手机上的连接用户名、密码、代理地址、代理端口信息对运营商的Wap网络进行测试;
B:若已超过最大次数则返回到设置网络的步骤的第一步;
解析SIM卡号数据的步骤如下:
收到获取手机号码的请求及SIM卡号后将SIM卡号数据解析成手机号码,将其按照一定格式组成返回结果发送给回调接口。
本发明包括客户端模块和解析服务器两个部分,都有各自的实施方式,系统结构如图1所示。以下便是各部分的实施方式的举例说明。
客户端模块是运行在开发者应用程序的内部,需要开发者在开发应用程序时将客户端模块嵌入到期应用程序内部。在基于Android的应用程序的开发中,本发明的客户端模块是以java JAR文件的形式存在。开发者需要在Android的应用程序中,首先import本发明的JAR包。第二,由于本发明客户端需要对智能手机的网络进行检测和修改,以及需要数据库的操作、文件的读写、互联网的访问等操作,所以开发者需要在其开发的应用程序中添加以下的用户权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
<uses-permission android:name="android.permission.INTERNET" />
第三,开发者需要在其应用程序中调用本发明的GetPhoneNumber静态方法,将实现自己的OnGetPhoneNumberListener类的实例传递给该静态方法。并且,在开发者实现OnGetPhoneNumberListener类的同时,需要实现其中的onGetPhoneNumber(String phoneNumber)方法的操作。
解析服务器实现方法可以有两种方式:
第一种是新建立一个J2EE的Web项目工程,将本发明提供的解析服务器段的JAR文件引入到其中,并在其WebRoot\WEB-INF文件夹下的web.xml文件中添加以下的代码。
<filter-mapping>
<filter-name>GetPhoneNumberServlet</filter-name>
<url-pattern>/ GetPhoneNumber Servlet</url-pattern>
</filter-mapping>
<servlet>
<servlet-name> GetPhoneNumberServlet </servlet-name>
<servlet-class>com.kongxr.servlet. GetPhoneNumberServlet
</servlet-class>
</servlet>
第二种方式是将本发明的解析服务器直接嵌入到自己的J2EE的Web应用中。如果开发者自己已经有J2EE的Web服务端项目时,开发者便可以使用第二种方式。开发者需要将本发明提供的解析服务器段的JAR文件引入到其中,并在其WebRoot\WEB-INF文件夹下的web.xml文件中添加以上同样的代码。
通过以上对于客户端模块和解析服务器模块的简单引入和使用,便能够快速的将本发明装置快速的嵌入到开发者的项目中,使开发者能够快速的适配本发明装置。
Claims (7)
1.一种基于Android系统自动获取手机号码的装置,其特征在于:由客户端模块和解析服务器两部分组成,
所述的客户端模块包括接口调用子模块、获取数据子模块、硬件数据获取子模块、检测网络子模块、设置网络子模块;
所述的接口调用子模块与获取数据子模块连接,用于在收到应用程序发来的调用请求后记录应用程序的回调接口,触发获取数据子模块工作,接收获取数据子模块获得的手机号码送入回调接口;
所述的获取数据子模块还与硬件数据获取子模块及检测网络子模块连接,且与解析服务器无线连接,用于与解析服务器通讯并解析其返回的结果;
所述的硬件数据获取子模块与获取数据子模块、手机硬件信息模块、SIM卡及设置网络子模块连接:
当硬件数据获取子模块被获取数据子模块启动时,硬件数据获取子模块用于从手机硬件信息模块获取手机硬件号码字段和从SIM卡上获取SIM卡号字段数据,并将其发送给获取数据子模块;
当硬件数据获取子模块被设置网络子模块启动时,硬件数据获取子模块用于从SIM卡上获取SIM卡号字段数据,并将其发送给设置网络子模块;
所述的检测网络子模块与获取数据子模块、手机网络终端、用户提示模块、设置网络子模块连接,用于在被获取数据子模块启动后检测手机网络终端的网络状态,根据其状态或发送相应状态给用户提示模块,使其给用户发送提示信息,或向获取数据子模块发出指令,使其向解析服务器请求数据,或启动设置网络子模块;
所述的设置网络子模块与检测网络子模块、硬件数据获取子模块、获取数据子模块及手机网络模块连接,用于将当前手机网络终端的网络类型切换至运营商Wap连接状态;
所述的解析服务器用于收到客户端模块的获取数据子模块发来的SIM卡号数据及获取手机号码的请求后将SIM卡号数据解析成手机号码,将手机号码按照一定格式组成返回结果发送给客户端模块的获取数据子模块。
2.根据权利要求1所述的一种基于Android系统自动获取手机号码的装置,其特征在于:
所述的获取数据子模块与解析服务器通讯的过程具体如下:
向解析服务器发送获取手机号码的请求,
A:如果在返回结果的时间间隔内解析服务器没有响应,则直接发送失败结果给接口调用子模块,
B:如果获取到解析服务器返回的结果,便对结果进行解析。
3.根据权利要求1所述的一种基于Android系统自动获取手机号码的装置,其特征在于:
所述的获取数据子模块解析解析服务器返回的结果,其过程具体如下:
(1)检测本地数据库是否存在,若不存在新建本地数据库及本地数据库中的表格;
(2)若本地数据库存在,则从中获取手机硬件号码字段、SIM卡号字段、手机号码字段的数据:
若数据全为空,启动检测网络子模块;
若数据不为空,查看手机号码字段:
A:若手机号码字段为空,启动检测网络子模块;
B:若手机号码字段存在,启动硬件数据获取子模块;
(3)将从硬件数据获取子模块返回的手机硬件号码数据和SIM卡号数据与本地数据库中相应字段数据进行比对:
若比对结果一致或无需比对则将获得的手机号码、手机硬件号码、SIM卡号及获取时间存入到本地数据库相应的字段中,并将手机号码字段对应的手机号码数据发送给接口调用子模块;
若比对结果不一致,则启动检测网络子模块。
4.根据权利要求1所述的一种基于Android系统自动获取手机号码的装置,其特征在于:
所述的检测网络子模块用于在被获取数据子模块启动后检测手机网络终端的网络状态,根据其状态或发送相应状态给用户提示模块,使其给用户发送提示信息,或向获取数据子模块发出指令,使其向解析服务器请求数据,或启动设置网络子模块,具体如下:
检测手机网络终端的网络是否为无线网络接通状态:
(1)若不是则将相应结果发送给用户提示模块,用户提示模块收到后向用户发送开启网络至无线网络状态的提示信息;
具体为:
检测手机网络终端的网络是否可达:
A:若网络不可达则将相应结果发送给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
B:若网络可达则检测手机网络终端的网络是否为Wifi连接状态,若是则将相应结果发送给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
(2)若是则检测此时手机网络终端所连接的网络类型:
A:若网络类型为运营商Wap连接状态,则直接向获取数据子模块发出指令,使其向解析服务器发送SIM卡号数据及获取手机号码的请求;
B:若网络类型为互联网Net状态,则启动设置网络子模块。
5.根据权利要求1所述的一种基于Android系统自动获取手机号码的装置,其特征在于:
所述的设置网络子模块用于将当前手机网络终端的网络类型切换至运营商Wap连接状态,具体步骤如下:
第一步,检测手机网络模块是否已设置到了初始网络状态:
(1)若是则进入下一步;
(2)若不是则启动硬件数据获取子模块从SIM卡上获取SIM卡号字段数据,得到数据后判断当前手机属于国内哪一家运营商,接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口数据设置到手机网络模块上,此刻手机网络模块即已设置到了初始网络状态;
第二步,根据手机网络模块上的连接用户名、密码、代理地址、代理端口的数据对运营商的Wap网络进行测试,
(1)若测试成功则说明网络类型已切换至运营商Wap连接状态;
(2)若测试不成功则检测当前测试次数是否大于设置网络子模块限制的最大次数,
A:若未超过最大次数则重新根据手机网络模块上的连接用户名、密码、代理地址、代理端口信息对运营商的Wap网络进行测试;
B:若已超过最大次数则返回到第一步。
6.根据权利要求1-5之一所述的一种基于Android系统自动获取手机号码的装置,其特征在于:
所述的解析服务器包括数据获取子模块、解析数据子模块、返回数据子模块;
所述的数据获取子模块用于收到客户端模块的获取数据子模块发来的SIM卡号数据及获取手机号码的请求后启动解析数据子模块并向其传送SIM卡号数据;
所述的解析数据子模块用于将SIM卡号数据解析成手机号码,将其发送给返回数据子模块;
所述的返回数据子模块将解析数据子模块发送来的手机号码按照一定格式组成返回结果发送给客户端模块的获取数据子模块。
7.一种基于Android系统自动获取手机号码的方法,其特征在于:由以下接口调用的步骤、获取手机号码的步骤、检测网络的步骤、设置网络的步骤、解析SIM卡号数据的步骤实现:
接口调用的步骤:在收到应用程序发来的调用请求后记录应用程序的回调接口,进入获取手机号码的步骤,接收获取到手机号码后送入回调接口;
获取手机号码的步骤:包括启动解析SIM卡号数据的步骤及在收到手机号码后解析手机号码的步骤,
启动解析SIM卡号数据的步骤如下:
向解析服务器发送获取手机号码的请求,
A:如果在返回结果的时间间隔内解析服务器没有响应,则直接返回失败结果,
B:如果获取到解析服务器返回的结果,便对结果进行解析;
所述解析手机号码的步骤如下:
(4)检测本地数据库是否存在,若不存在新建本地数据库及本地数据库中的表格;
(5)若本地数据库存在,则从中获取手机硬件号码字段、SIM卡号字段、手机号码字段的数据:
若数据全为空,则进入检测网络的步骤,
若数据不为空,查看手机号码字段:
A:若手机号码字段为空,则进入检测网络的步骤;
B:若手机号码字段存在,则获取的手机硬件号码数据和SIM卡号数据;
(6)将手机硬件号码数据和SIM卡号数据与本地数据库中相应字段数据进行比对:
若比对结果一致或无需比对则将获得的手机号码、手机硬件号码、SIM卡号及获取时间的数据存入到本地数据库相应的字段中,并将手机号码字段对应的手机号码数据返回给回调接口;
若比对结果不一致,则进入检测网络的步骤;
检测网络的步骤如下:
检测手机网络终端的网络是否为无线网络接通状态:
(1)若不是则将相应结果返回给用户提示模块,用户提示模块收到后向用户发送开启网络至无线网络状态的提示信息;
具体为:
检测手机网络终端的网络是否可达:
A:若网络不可达则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
B:若网络可达则检测手机网络终端的网络是否为Wifi连接状态,若是则将相应结果返回给用户提示模块,用户提示模块收到后提示用户开启网络至无线网络状态;
(2)若是则检测此时手机网络终端所连接的网络类型:
A:若网络类型为运营商Wap连接状态,则进入获取手机号码的步骤;
B:若网络类型为互联网Net状态,则进入设置网络的步骤;
设置网络的步骤如下:
第一步,检测手机是否已设置到了初始网络状态:
(1)若是则进入下一步;
(2)若不是则从SIM卡上获取SIM卡号字段数据,得到数据后判断当前手机属于国内哪一家运营商,接着,将该运营商Wap网络的连接用户名、密码、代理地址、代理端口数据设置到手机网络模块上,此刻手机网络模块即已设置到了初始网络状态;
第二步,根据手机上的连接用户名、密码、代理地址、代理端口的数据对运营商的Wap网络进行测试,
(1)若测试成功则说明网络类型已切换至运营商Wap连接状态;
(2)若测试不成功则检测当前测试次数是否大于系统限制的最大次数,
A:若未超过最大次数则重新根据手机上的连接用户名、密码、代理地址、代理端口信息对运营商的Wap网络进行测试;
B:若已超过最大次数则返回到设置网络的步骤的第一步;
解析SIM卡号数据的步骤如下:
收到获取手机号码的请求及SIM卡号后将SIM卡号数据解析成手机号码,将其按照一定格式组成返回结果发送给回调接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410224844.4A CN104104743B (zh) | 2014-05-26 | 2014-05-26 | 一种基于Android系统自动获取手机号码的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410224844.4A CN104104743B (zh) | 2014-05-26 | 2014-05-26 | 一种基于Android系统自动获取手机号码的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104104743A true CN104104743A (zh) | 2014-10-15 |
CN104104743B CN104104743B (zh) | 2017-10-10 |
Family
ID=51672541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410224844.4A Active CN104104743B (zh) | 2014-05-26 | 2014-05-26 | 一种基于Android系统自动获取手机号码的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104104743B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375988A (zh) * | 2015-07-23 | 2017-02-01 | 中国移动通信集团公司 | 获取手机号码的方法、装置、验证平台及终端设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800977A (zh) * | 2010-01-21 | 2010-08-11 | 深圳市五巨科技有限公司 | 一种收集移动终端用户信息的方法和系统 |
CN102467524A (zh) * | 2010-11-11 | 2012-05-23 | 北京无限讯奇信息技术有限公司 | 个性化搜索中的手机用户标识获取与关联方法 |
CN102946594A (zh) * | 2012-10-15 | 2013-02-27 | 南京城际在线信息技术有限公司 | Telematics系统中使用“一键导航”时自动获取设备信息的方法 |
CN103167444A (zh) * | 2011-12-19 | 2013-06-19 | 中国电信股份有限公司 | 网站获取用户手机号码的方法、系统、客户端及服务器 |
CN103458392A (zh) * | 2012-06-05 | 2013-12-18 | 中国联合网络通信集团有限公司 | 一种跨应用商店时的用户注册方法和系统 |
-
2014
- 2014-05-26 CN CN201410224844.4A patent/CN104104743B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800977A (zh) * | 2010-01-21 | 2010-08-11 | 深圳市五巨科技有限公司 | 一种收集移动终端用户信息的方法和系统 |
CN102467524A (zh) * | 2010-11-11 | 2012-05-23 | 北京无限讯奇信息技术有限公司 | 个性化搜索中的手机用户标识获取与关联方法 |
CN103167444A (zh) * | 2011-12-19 | 2013-06-19 | 中国电信股份有限公司 | 网站获取用户手机号码的方法、系统、客户端及服务器 |
CN103458392A (zh) * | 2012-06-05 | 2013-12-18 | 中国联合网络通信集团有限公司 | 一种跨应用商店时的用户注册方法和系统 |
CN102946594A (zh) * | 2012-10-15 | 2013-02-27 | 南京城际在线信息技术有限公司 | Telematics系统中使用“一键导航”时自动获取设备信息的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106375988A (zh) * | 2015-07-23 | 2017-02-01 | 中国移动通信集团公司 | 获取手机号码的方法、装置、验证平台及终端设备 |
CN106375988B (zh) * | 2015-07-23 | 2020-02-18 | 中国移动通信集团公司 | 获取手机号码的方法、装置、验证平台及终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104104743B (zh) | 2017-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5112340B2 (ja) | 加入者識別モジュール(sim)アプリケーション・ツールキットの改良されたテスト方法及びシステム | |
CN105306676B (zh) | 接入智能设备的方法、装置及系统 | |
CN109408132A (zh) | 一种配置文件处理方法及服务器、用户终端、存储介质 | |
US20090124251A1 (en) | Method of Assessing Compatibility Between Applications and Processor Devices | |
JP6453417B2 (ja) | デュアルsim移動通信装置のクラウド識別方法、装置及びシステム | |
CN102098808A (zh) | 数据卡及数据卡连网的方法 | |
KR20110128632A (ko) | 스마트폰 응용프로그램의 악성행위 탐지 방법 및 장치 | |
EP2232799A1 (en) | Systems and methods of making a call | |
WO2016041171A1 (zh) | 确定终端漫游状态的方法、装置、终端及服务器 | |
CN104754136A (zh) | 基于智能终端的手机号码相关账号的管理方法及管理系统 | |
CN107957913A (zh) | 关联启动的管控方法、装置、存储介质及移动终端 | |
CN105205001A (zh) | 游戏程序的测试方法、装置及系统 | |
CN111078424A (zh) | 一种信息交互方法、装置、计算机设备和存储介质 | |
CN107135516B (zh) | 一种参数测试处理方法、移动终端以及计算机可读存储介质 | |
CN107040892B (zh) | 移动终端的位置信息获取方法、装置及移动终端 | |
CN111107093B (zh) | 一种应用登录方法、装置、终端及存储介质 | |
CN104104743B (zh) | 一种基于Android系统自动获取手机号码的方法及装置 | |
CN109995931B (zh) | 一种实现自动呼叫的方法及装置 | |
CN105228139B (zh) | 一种基于智能设备的呼叫处理方法、装置及设备 | |
CN106302011A (zh) | 基于多端的测试方法及终端 | |
US9992638B1 (en) | System and method of facilitating management of common channel based services | |
CN113365346B (zh) | 寻呼方法、装置、电子设备及存储介质 | |
US20170171320A1 (en) | Method, terminal and domain name server for connecting terminal to server | |
CN106506844A (zh) | 一种基于约定短信的微信远程移动监听和回传系统、方法 | |
CN103118080B (zh) | 基于Android浏览器的下载管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |