安全卫士分析--号码归属地
前言
很早之前就看到网上有一个手机安全卫士和手机助手的源码,一直没看看里面的一些实现,今天下载后运行,发现手机卫士其实只是个界面短信公共感觉没实现,有待具体分析,本文将分析手机助手里德号码归属地查询。
源码传送门:
git clone git@github.com:avenwu/mobilehelper.git 或
git clone https://github.com/avenwu/mobilehelper.git
本文使用到的技术如下:
- json解析
- Android volley, https://android.googlesource.com/platform/frameworks/volley
- RoboGuice, https://github.com/roboguice/roboguice
正文
要查归属地我觉得有两种思路,一是本地数据库查询,这个需要你有一个各大运营商手机号段的数据,另一个就是走网络查询,现在网上有很多这种提供号码查询的站点很多,但是会返回许多额外的数据,搜索了下找到两篇文章,内容基本一样,不知道那篇是原创:
http://blog.sina.com.cn/s/blog_7bac4707010143o2.html
http://www.cnblogs.com/88223100/archive/2013/03/06/2945474.html
上面列出的实际上就是一些比较好的干净api,返回的数据简洁明了,主要有xml和json两种格式,
现在选用https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=13717830629作为查询的api,
其返回结果如下:
phone( { meta:{ result: "0", result_info: "", jump_url: "" }, data: { operator: "移动", area: "江苏", area_operator: "江苏移动" } } )
这个是json格式,但不是完全正确,所以解析时要做一点修改。
json数据的正确格式是:(1)一个对象以“{”(左括号)开始,“}”(右括号)结束。
(2)每个“名称”后跟一个“:”(冒号);
(3)“‘名称/值’ 对”之间使用“,”(逗号)分隔。
发请求时,只需将参数换为要查询的手机号即可:
String url = PRE_URL.replace("phoneNumber", editPhonenumber .getText().toString().trim()); phoneRequest = new StringRequest(url, new Listener<String>() { @Override public void onResponse(String arg0) { /* * phone( { meta: { result: "0", result_info: "", * jump_url: "" }, data: { operator: "移动", area: "江苏", * area_operator: "江苏移动" } } ) */ int start = arg0.indexOf("{"); int end = arg0.lastIndexOf("}") + 1; JSONObject json = null; try { json = new JSONObject(arg0.substring(start, end)); StringBuffer result = new StringBuffer(); result.append("手机号:" + editPhonenumber.getText().toString() .trim()); result.append("\n运营商:" + json.getJSONObject("data").get( "area_operator")); tvResult.setText(result.toString()); } catch (JSONException e) { e.printStackTrace(); } } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { Toast.makeText(MainActivity.this, R.string.query_failed, Toast.LENGTH_SHORT) .show(); } }); NetManager.queryPhoneNumber(phoneRequest);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?