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; } }
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦