为了账号安全,请及时绑定邮箱和手机立即绑定

依据号码查归属地

标签:
Android
package com.zyclong.contactlibrary.contactslibrary.dao;


import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

/**访问手机号码归属地的工具类
 * 
 * @author Administrator
 *
 */
public class AddressDao {
   /**依据号码查归属地
    * 
    * @param context
    * @return
    */
    public static String quereyAddress(Context context,String num){ //数据库访问的工具类
       String location="";
       /**通过SQLiteDatabase打开数据库
        * OPEN_READONLY:只读方式
        * path:要访问的数据库文件路径: /data/data/《包》/files/address.db
        */
       SQLiteDatabase db = SQLiteDatabase.openDatabase(
             context.getFilesDir().getAbsolutePath()+"/address.db", null, SQLiteDatabase.OPEN_READONLY);
       /**
        * 号码的查询分析:
        *   1. 手机号码查询 : 11位 
        *      如何设别手机号码
        *      通过正则表达式来识别:
        *        ^1[345678]\d{9}$
        *   2. 三位的 号码  110   120  119  121 等   : 特殊号码 
        *   3. 四位的号码   5556 ,5554 : 虚拟号码
        *   4. 五位的号码  10086  10000  95553  95556   12345 等 
        *      服务号码
        *   5. 本地座机号码  7位或者8位
        *   6. 长途号码   020-68767565    0735-56435434
        */
       if(num.matches("^1[345678]\\d{9}$")){ //匹配手机号码    
       Cursor cursor = db.rawQuery("select location from data2 where id in(select outkey from data1 where id=?)",
             new String[]{num.substring(0, 7)});
       while(cursor.moveToNext()){ //
          location=cursor.getString(0);
       }
       cursor.close();
       db.close();
       }else{
          switch (num.length()) {
         case 3: //特殊号码
            location="特殊号码";
            break;
         case 4: //虚拟号码
            location="虚拟号码";
            break;
         case 5: //客服号码
            location="客服号码";
            break;
         case 7: //本地号码
         case 8://本地号码
            location="本地号码";
            break;
         default:
            if(num.startsWith("0")){ // 长途号码  ,位数: 11或者12位 ,必须以 0 开始   020-5678956   0755-23456789   029-34564436
               if(num.length()>=10) 
               {
                  //依据area 来识别号码归属地  ,取得号码的前缀  ,假如区号是 三位的 ,比如 020 
                  String area=num.substring(1, 3);  
                  Cursor c = db.rawQuery("select location from data2 where area=?", new String[]{area});
                  if(c.moveToNext()){
                     location=c.getString(0);
                     c.close();
                  }
                  else{ //依据area 来识别号码归属地  ,取得号码的前缀  ,假如区号是 三位的找不到,则查找区号是4位的 ,比如 0755 
                     String area1=num.substring(1, 4); 
                     Cursor c1 = db.rawQuery("select location from data2 where area=?", new String[]{area1});
                     if(c1.moveToNext()){
                        location=c1.getString(0);
                        c1.close();
                     }
                  }
                  
               }
            }
            break;
         }
       }
       db.close();
       return location;
    }
  

}

原文链接:http://www.apkbus.com/blog-895745-63356.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消