最近在网上下载了一个"猫头鹰"手机归属地查询软件,界面太繁杂,看着很不爽,于是自己也做了一个.速度也有明显的改进:

原版的软件一次读取整个文件,我这个一次只读取一组,比较完后再读取!占用内存相对较少!!!!!!

在我的Nokia5300上测试通过

  1. import java.io.*;
  2. import javax.microedition.midlet.*;
  3. import javax.microedition.lcdui.*;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.io.InputStreamReader;
  7. import javax.microedition.lcdui.Command;
  8. import javax.microedition.lcdui.CommandListener;
  9. import javax.microedition.lcdui.Display;
  10. import javax.microedition.lcdui.Displayable;
  11. import javax.microedition.midlet.MIDlet;
  12. import java.util.Vector;
  13. public class PhoneNumber extends MIDlet implements CommandListener
  14. {
  15. private Display display;
  16. private TextBox  tb;
  17. private String ok="";
  18. private String[][] tel= { { "10", "北京", "北京" }, { "20", "广东", "广州" }, { "21", "上海", "上海" }, { "22", "天津", "天津" }, { "23", "重庆", "涪陵" }, { "23", "重庆", "黔江" }, { "23", "重庆", "万州" }, { "23", "重庆", "巫山" }, { "23", "重庆", "重庆" }, { "24", "辽宁", "沈阳" }}; //区号,省,市!只写了一部分,太长了...
  19. Command commit;
  20. Command about;
  21. public PhoneNumber(){
  22. display=Display.getDisplay(this);
  23. }
  24. public void startApp(){
  25. commit=new Command("查询",Command.SCREEN,1);
  26. about=new Command("关于",Command.SCREEN,1);
  27. tb=new TextBox("请在下面输入要查询的手机号:","1382728",7,TextField.NUMERIC);
  28. tb.addCommand(commit);
  29. tb.addCommand(about);
  30. tb.setCommandListener(this);
  31. display.setCurrent(tb);
  32. }
  33. public void pauseApp(){}
  34. public void destroyApp(boolean abc){}
  35. public void commandAction(Command c,Displayable s){
  36. if(c==commit){
  37. //查询
  38. if (this.tb.getString().length() == 7)
  39. query();
  40. else
  41. MsgBox("请输入手机号的前7位数!","提示");
  42. }
  43. if(c==about){
  44. Alert ab=new Alert("关于...");
  45. ab.setType(AlertType.INFO);
  46. ab.setTimeout(Alert.FOREVER);
  47. ab.setString("手机查询软件/r/n(C)2008 石磊/r/nQQ:262754413");
  48. display.setCurrent(ab);
  49. return;
  50. }
  51. }
  52. //执行查询
  53. void query()
  54. {
  55. String dq = "";
  56. int ext = Integer.parseInt(this.tb.getString().substring(3));       //取电话号码后面的数字
  57. int bef = Integer.parseInt(this.tb.getString().substring(0, 3));    //前三
  58. int qx = 0;                                                         //区号
  59. String type="UNKNOW";                                               //类型
  60. //获取号码类型
  61. if ((bef == 130) || (bef == 131) || (bef == 132) || (bef == 153) || (bef == 156))
  62. type = "中国联通GSM卡";
  63. else if(bef == 133)
  64. type = "中国联通CDMA卡";
  65. else
  66. type = "中国移动GSM卡";
  67. //取得数据文件路径
  68. //try{
  69. String dataFile = "/phone" + bef + ".txt";                      //数据文件地址
  70. InputStream is = getClass().getResourceAsStream(dataFile);      //输入流
  71. InputStreamReader r = new InputStreamReader(is);                //流读取器
  72. int ct=0;
  73. String nums = "";
  74. while (true) {
  75. //一次读取一位
  76. int chr = 0;
  77. try{
  78. chr = r.read();                                         //一次读取一Byte
  79. }
  80. catch (IOException ioe) {
  81. MsgBox(ioe.toString(),"Read异常");
  82. return;
  83. }
  84. if (chr == -1) break;                                       //如果没有可用数据则跳出
  85. //读取到一排就比较
  86. if (chr == 124)
  87. {
  88. String[] t = split(nums, ",");
  89. if ((ext >= Integer.parseInt(t[0])) && (ext <= Integer.parseInt(t[1])))
  90. {
  91. qx = Integer.parseInt(t[2]);
  92. break;
  93. }
  94. nums = "";
  95. }
  96. else
  97. {
  98. nums = nums + (char)chr;
  99. }
  100. }
  101. try{
  102. r.close();
  103. is.close();
  104. }catch(IOException ioe){}
  105. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  106. if (qx == 0) {
  107. MsgBox("未知号码!","错误");
  108. return;
  109. }
  110. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  111. for (int i = 0; i < tel.length; i++) {
  112. if (Integer.parseInt(tel[i][0]) == qx) {
  113. dq = tel[i][1] + tel[i][2];
  114. break;
  115. }
  116. }
  117. //补0
  118. type = "号码:" + tb.getString() + "/r/n" + type + "/r/n"+dq+"(";
  119. if ((qx < 100)||(qx < 1000))  type += "0";
  120. type = type +qx+ ")";
  121. //}
  122. //catch(IOException err){
  123. //    MsgBox(err.toString(), "错误");
  124. //    return;
  125. //}
  126. //显示结果
  127. MsgBox(type, "查询结果");
  128. return;
  129. }
  130. //消息框
  131. void MsgBox(String msg,String title) {
  132. Alert ab = new Alert(title);
  133. ab.setType(AlertType.CONFIRMATION);
  134. ab.setTimeout(Alert.FOREVER);
  135. ab.setString(msg);
  136. display.setCurrent(ab);
  137. }
  138. //字符分割
  139. public static  String[] split(String original,String regex) {
  140. int startIndex = 0;
  141. Vector v = new Vector();
  142. String[] str = null;
  143. int index = 0;
  144. startIndex = original.indexOf(regex);
  145. while(startIndex < original.length() && startIndex != -1)
  146. {
  147. String temp = original.substring(index,startIndex);
  148. v.addElement(temp);
  149. index = startIndex + regex.length();
  150. startIndex = original.indexOf(regex,startIndex + regex.length());
  151. }
  152. v.addElement(original.substring(index + 1 - regex.length()));
  153. str = new String[v.size()];
  154. for(int i=0;i<v.size();i++)
  155. str[i] =(String)v.elementAt(i);
  156. return str;
  157. }
  158. }

J2ME:手机归属地查询软件相关推荐

  1. [iPhone-APP]手机归属地查询软件

    无聊.周末写几个APP玩,终于在上午把网络折腾好了.5块钱的8139网卡让我时常能在MAC下上网. 图标简陋啊... 技术要点: 1.组一个SOAP包.用NLURLConnection连接. 2.找一 ...

  2. Android手机归属地查询工具

    在Android应用开发中,经常需要与网络上的服务端的程序(J2EE或者.NET等应用)进行通信.交互.例如"优酷.土豆"的android客户端,每天访问都会有最新的视频资讯,那些 ...

  3. wp7 手机归属地查询

    ps:之前一直看卤面网,看博客园里强人关于wp7开发介绍等也快大半个月了,不得不说实践是检验真理的唯一标准,还得自己动手做,这个是我做的第一个wp7小程序:手机归属地查询.不废话,先上图: 此应用拥有 ...

  4. JavaScript学习:利用第三方接口做手机归属地查询

    逆战学习 整理一下关于怎么获取接口数据,然后渲染数据到页面上 第三方接口地址:手机归属地查询 一.思路和大致需要用到的知识点 1.body标签里准备一个input和button,用一个盒子包起来,一个 ...

  5. HTML5第9节课堂笔记(初探mui,制作手机归属地查询)

    手机MUI程序 ,利用它的ajax方法访问baidu的API http://apistore.baidu.com/apiworks/servicedetail/794.html http://dev. ...

  6. 身份证归属地查询软件(离线版)

    这是一款使用C#语言写的软件,可以实现身份证归属地离线查询功能,目前源代码已经开源至码云,github平台,效果如下: 当输入前两位数字时,可查询到相关省:当输入前四位数字时,可查询到相关市:当输入前 ...

  7. php实现手机归属地的查询、,PHP实现手机归属地查询API接口实现代码

    我们经常会开发一些行业分类的网站,这个时候我们需要显示手机归属这个功能,这个时候我们找了很多API接口的地址,但是都不如人意,那么PHP实现手机归属地查询API接口实现代码,大家清楚吗?一起去看看爱站 ...

  8. 实现手机归属地查询页面

    实现手机归属地查询页面 看图!!! 页面的实现: 使用Ajax异步请求向服务器发送请求,请求手机号归属地查询,然后动态生成列表,显示手机号码段,卡号归属地,卡的类型等信息,代码如下: <!DOC ...

  9. 12、手机归属地查询API接口,免费好用

    1.前言 手机归属地查询接口,这个是RollToolsApi通用系列接口的其中一个,内部包含了1个小接口,能实现查询手机号的归属地,可用于粗略估算注册用户的所在地. 查看接口完整信息:https:// ...

最新文章

  1. kafka官方文档学习笔记2--QuickStart
  2. CentOS7和CentOS6怎样开启MySQL远程访问
  3. 分析约瑟夫问题(循环单链表)
  4. 更改Android Studio中AVD的默认路径
  5. How to download ABAP development Tool from Fiori Launchpad
  6. webservice系统学习笔记9-使用契约优先的方式的一个服务端demo(隐式传Header信息)...
  7. 清空计算机网络缓存,【缓存清理工具】缓存清理软件_电脑缓存清理软件【最新】-太平洋电脑网...
  8. MarkDown语言
  9. P5068 [Ynoi2015]我回来了
  10. 5 QM配置-质量计划配置-编辑缺陷类型的选择集
  11. python async socket_Python开发中常用的标准库,这些都是你应该掌握的
  12. 你大爷还是你大爷!三星震撼首发折叠屏智能手机Galaxy Fold
  13. python和java哪个好学-Java VS Python 应该先学哪个?
  14. pip 指定版本安装
  15. Swift 类与结构体
  16. DBVisualizer 添加数据库JDBC驱动
  17. 提现php防刷,PHP简单的防刷计数器–已经图片化
  18. 微信小程序网络请求服务器php接口获取数据库数据信息
  19. element树形控件拖拽allow-drop控制
  20. git 删除添加的远程地址

热门文章

  1. 回望2016-2018,希望在2019年有所斩获!
  2. Kid的某些跳刺套路
  3. win8服务器防火墙配置文件,Win8自带防火墙吗,Win8防火墙在哪里(适用于Win8.1)?
  4. struct模块使用
  5. 【无标题】8421码,5421码,2421码,余3码之间的区别。
  6. 【图像语义分割】Large Kernel Maters--Improved Semantic Segmentation by Global ConvNet
  7. QGraphicsView图形视图框架使用(三)位移变换和图元定位
  8. 王杰律师出席“2009软件开发2.0技术大会”
  9. 无剑100SOC(wujian100)挂UART外设之④修改SDK
  10. 分糖果 小明从糖果盒中