为什么要做这个呢?这学期选了一个《移动通讯软件设计》的课程,要求做个程序当小作业吧,哎!学校开的课程各种乱,无力吐槽了 。对android 开发之前完全没有接触过,自己摸索中做的,参照了网上太多地方,就不一一列举了。

代码有点乱,主要是手生。界面就是拖点原生的组件糊上去。「Android 4.0+ 」吧,以前版本不能用。

主要功能:

1. 来去电手机归属地显示(接收系统广播实现,没有跑后台服务)

2. 手机号归属地查询,包括查询本地数据库,和通过网络查询(有道的接口,返回XML)

3. 如果网络上面的归属地信息与本地不一样,可以一键更新到本地

4. 源码里面有一个8M多的数据Sqlite数据库,27W+条手机号归属地数据,自己从网上一条一条抓取下来的,可能比我程序的价值还大些。

1.[代码][Android 4.0 + ]

// 使用网络查询归属地数据库

class RemoteHelper extends AsyncTask {

public RemoteHelper(Context context) {

}

@Override

protected PhoneArea doInBackground(String... params) {

PhoneArea phoneArea = null;

// 有道手机归属地api

String path = "http://www.youdao.com/smartresult-xml/search.s?type=mobile&q="

+ params[0];

try {

HttpClient client = new DefaultHttpClient();

HttpGet get = new HttpGet(path);

HttpResponse response = client.execute(get);

HttpEntity entity = response.getEntity();

InputStream is = entity.getContent();

if (is != null) {

try {

//解析XML

List products = parseXML(is);

if (products.size() == 1) {

Product product = products.get(0);

String phonenum = product.getPhonenum();

StringBuffer location = new StringBuffer(

product.getLocation());

//在归属地后面加上运营商

if (phonenum

.matches("^(130|131|132|145|155|156|185|186).*$")) {

location.append("[联通]");

} else if (phonenum

.matches("^(133|153|1349|180|181|189).*$")) {

location.append("[电信]");

} else {

location.append("[移动]");

}

phoneArea = new PhoneArea(Integer.parseInt(phonenum

.substring(0, 7)), location.toString()

.replaceAll(" ", ""));

}

} catch (Exception e) {

e.printStackTrace();

}

}

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return phoneArea;

}

private List parseXML(InputStream inputStream)

throws XmlPullParserException, IOException {

List products = new ArrayList();

Product product = null;

XmlPullParser parser = Xml.newPullParser();

parser.setInput(inputStream, "GBK");

int event = parser.getEventType();

while (event != XmlPullParser.END_DOCUMENT) {

switch (event) {

case XmlPullParser.START_TAG:

if ("product".equals(parser.getName())) {

product = new Product();

} else if ("phonenum".equals(parser.getName())) {

product.setPhonenum(parser.nextText());

} else if ("location".equals(parser.getName())) {

product.setLocation(parser.nextText());

}

break;

case XmlPullParser.END_TAG:

if ("product".equals(parser.getName())) {

products.add(product);

product = null;

}

break;

}

event = parser.next();

}

return products;

}

/**

* 返回时调用

*/

@Override

protected void onPostExecute(PhoneArea phoneArea) {

if (phoneArea != null && phoneArea.getArea() != null) {

String area = phoneArea.getArea();

textView5.setText(area);

//网络查询结果与本地不一致是,将「更新到本地」菜单设置为可以点击

if (!area.equals(textView3.getText().toString())) {

menuItem.setEnabled(true);

}

} else

textView5.setText(R.string.none_area);

progressBar2.setVisibility(ProgressBar.GONE);

}

}

2.[图片] Screenshot_2013-06-11-15-26-10.png

3.[图片] Screenshot_2013-06-11-15-26-21.png

4.[图片] Screenshot_2013-06-11-15-35-50.png

5.[文件] checkout.tar.gz ~ 2MB     下载(499)

android+归属地+数据库,「Android」来去电显示归属地、归属地查询的小程序。相关推荐

  1. android linux 优化,【「Android」UE手游研发中,如何做好Android内存优化?】|Linux|DEX|腾讯游戏|_傻大方...

    傻大方提要:[「Android」UE手游研发中,如何做好Android内存优化?]编者按在大年夜多半人的印象里,用UE引擎制造出来的游戏实际占用内存会比较高.腾讯游戏学院专家Leonn,将和大年夜家分 ...

  2. 格志日志 android,GitHub - SaintAdrian/GridDiary: 格志日记Android版,用「自问」的形式引导自己写日记。...

    格志日记 为什么要开发这个软件? 日记,大概是一个人最忠实的朋友.开心的时候,可以和它分享:难过的时候,可以向它倾诉:就算日子如水一般平淡地匆匆而过, 至少也有它帮你记住那些繁杂和琐碎,那些声希味淡和 ...

  3. android 9坚果r1,「旗舰」坚果R1开箱,红蓝荧光照亮细细的红线

    「旗舰」坚果R1开箱,红蓝荧光照亮细细的红线 2018-06-29 21:03:21 8点赞 8收藏 6评论 5月15日,锤子科技在鸟巢正式宣布旗下的硬件产品中文将统一以[坚果]为名,并发布了旗舰机型 ...

  4. AI复活「她」!用GPT-3复刻逝去未婚妻,美国小哥让挚爱以数字形态永生

    转载自:新智元 「死亡不是真正的逝去,遗忘才是永恒的消亡.」 即便逝去,也不要遗忘. 近日,一位美国男子 Joshua Barbeau 在未婚妻去世后,重建了一个AI聊天机器人以复刻死去的未婚妻. J ...

  5. CSS基础「六」元素的显示与隐藏

    本篇文章为 CSS 基础系列笔记第六篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  6. 「开发者说」自动化设备管理上钉钉,“源创食堂“小程序开发实践

    本篇文章的供稿人为柳州源创电喷技术有限公司装备开发部部长蒙东辉,概览本文大概需要3分钟,精读本文需要10分钟. "钉钉应用开发让公司食堂都实现了数字化转型,食堂备餐浪费与不足的现象得到了有效 ...

  7. PHP开发B2C商城 微信小程序商城系统源码+数据库,轻量级前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP

    项目介绍 一款轻量级.高性能.前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP,前后端源码完全开源,看见及所得,完美支持二次开发,可学习可商用,让您快速搭建个性化独立商城. 完整代 ...

  8. 小程序 数据库 时间_新增NBA2K19数据查询功能 小程序【大P数据库】更新公告

    自微信小程序[NBA2KOL2大P数据库]上线以来,我们就收到了很多朋友的热心反馈,其中就有不少朋友希望加入NBA2K19球员数据的查询功能. 之所以很多朋友会有这样的建议是因为在NBA2KOL2游戏 ...

  9. android surfaceflinger 老罗,「Android」SurfaceFlinger分析

    本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2   layer显示 ...

最新文章

  1. swust oj 962
  2. 支持多种小程序!阿里云ARMS推出小程序监控
  3. (转)flask的context机制
  4. express 配置支持https
  5. Python3道基础练习题
  6. linux双机(多机)自动互备份方案
  7. element中select默认选中第一个_探索在网页中使用“标注”
  8. java equals 判断空_Java 判断字符串是否为空的三种方法与性能分析
  9. 【数值分析】顺序高斯消去法和列主元高斯消去法的三个主要不同点
  10. ij运行tomcat_如何把本地Web项目部署到云服务器上
  11. 使用Docker Swarm部署MinIO ​​​​​​​
  12. Windows Server 2008首选项
  13. 【Dubbo篇】--Dubbo框架的使用
  14. 东财《国际贸易法》综合作业
  15. [ZZ] Adventures with Gamma-Correct Rendering
  16. BZOJ4836: [Lydsy1704月赛]二元运算-分治FFT
  17. MVP简单封装,不用再手写了
  18. 排列 组合 算法(一)
  19. 1.27 Watermelon
  20. Redis是什么?Redis有哪些数据类型?Redis怎么集群?

热门文章

  1. paddlepaddle 20 指数移动平均(ExponentialMovingAverage,EMA)的实现与使用(支持静态图与动态图)
  2. 大数据︱中国城市谁在腾飞?谁又在衰落?
  3. angular4 新建模块
  4. java从零开发贪吃蛇游戏全流程
  5. ios 更新尺寸调用什么方法_iOS开发:iPhone尺寸和适配
  6. IBM服务器找不到硬盘怎么设置,关于IBM x3400服务器找不到硬盘(RAID0)問題
  7. cmd的如何打开、运行?(1)
  8. jade基础文档总结
  9. 【分享贴】硬件电路设计思路
  10. 电脑怎么修改文件创建时间?