android+归属地+数据库,「Android」来去电显示归属地、归属地查询的小程序。
为什么要做这个呢?这学期选了一个《移动通讯软件设计》的课程,要求做个程序当小作业吧,哎!学校开的课程各种乱,无力吐槽了 。对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」来去电显示归属地、归属地查询的小程序。相关推荐
- android linux 优化,【「Android」UE手游研发中,如何做好Android内存优化?】|Linux|DEX|腾讯游戏|_傻大方...
傻大方提要:[「Android」UE手游研发中,如何做好Android内存优化?]编者按在大年夜多半人的印象里,用UE引擎制造出来的游戏实际占用内存会比较高.腾讯游戏学院专家Leonn,将和大年夜家分 ...
- 格志日志 android,GitHub - SaintAdrian/GridDiary: 格志日记Android版,用「自问」的形式引导自己写日记。...
格志日记 为什么要开发这个软件? 日记,大概是一个人最忠实的朋友.开心的时候,可以和它分享:难过的时候,可以向它倾诉:就算日子如水一般平淡地匆匆而过, 至少也有它帮你记住那些繁杂和琐碎,那些声希味淡和 ...
- android 9坚果r1,「旗舰」坚果R1开箱,红蓝荧光照亮细细的红线
「旗舰」坚果R1开箱,红蓝荧光照亮细细的红线 2018-06-29 21:03:21 8点赞 8收藏 6评论 5月15日,锤子科技在鸟巢正式宣布旗下的硬件产品中文将统一以[坚果]为名,并发布了旗舰机型 ...
- AI复活「她」!用GPT-3复刻逝去未婚妻,美国小哥让挚爱以数字形态永生
转载自:新智元 「死亡不是真正的逝去,遗忘才是永恒的消亡.」 即便逝去,也不要遗忘. 近日,一位美国男子 Joshua Barbeau 在未婚妻去世后,重建了一个AI聊天机器人以复刻死去的未婚妻. J ...
- CSS基础「六」元素的显示与隐藏
本篇文章为 CSS 基础系列笔记第六篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...
- 「开发者说」自动化设备管理上钉钉,“源创食堂“小程序开发实践
本篇文章的供稿人为柳州源创电喷技术有限公司装备开发部部长蒙东辉,概览本文大概需要3分钟,精读本文需要10分钟. "钉钉应用开发让公司食堂都实现了数字化转型,食堂备餐浪费与不足的现象得到了有效 ...
- PHP开发B2C商城 微信小程序商城系统源码+数据库,轻量级前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP
项目介绍 一款轻量级.高性能.前后端分离的电商系统,支持微信小程序 + H5+ 公众号 + APP,前后端源码完全开源,看见及所得,完美支持二次开发,可学习可商用,让您快速搭建个性化独立商城. 完整代 ...
- 小程序 数据库 时间_新增NBA2K19数据查询功能 小程序【大P数据库】更新公告
自微信小程序[NBA2KOL2大P数据库]上线以来,我们就收到了很多朋友的热心反馈,其中就有不少朋友希望加入NBA2K19球员数据的查询功能. 之所以很多朋友会有这样的建议是因为在NBA2KOL2游戏 ...
- android surfaceflinger 老罗,「Android」SurfaceFlinger分析
本篇针对surfaceFlinger模块进行分析,目录如下: 1.SurfaceFlinger功能 1.1.BufferQueue原理(native/libs/gui模块) 1.2 layer显示 ...
最新文章
- EntityFramework SaveChange()方法不能更新的问题
- 《青春飞扬》诗集出版历程与思考分享 之三:游记、感悟与思考
- kali 开启ssh服务
- 在多个线程中使用QNetworkAccessManager
- javaweb实训第五天下午——SpringMVC基础
- Bailian2742 Number of letters【入门】
- 管理大量定时任务,如果高效触发超时?
- 价值函数与贝尔曼方程
- 服务器raid0系统坏了,服务器磁盘阵列raid1、raid0、raid5故障时的数据恢复思路和方法...
- easyphp 登陆mysql_EasyPHP 16.1.1无法启动MySQL
- 苹果台式电脑怎么使用计算机,MAC电脑连接台式电脑显示器怎么操作
- UML知识点总结(一)
- STM32脱机烧录器源文件、离线烧录器 制作资料 源文件
- 0.进校的第一张Excel表:“住宿分布表” ——《Excel“智能化”之路》 系列文章
- Synaptics蠕虫木马分析
- 如何使用计算机对文件修改密码,怎么给文件夹设密码-加密文档及给它们修改删除密码的具体操作方法...
- Package com.google.common.collect
- 喂养三种宠物:猫、狗和鸟
- 【深度森林算法实践】分类与回归
- 巨神奇,2013年的老Mac,竟直接装上macOS Ventura 13.1 Beta版