在前面的代码中,输入四位的号码:出现错误:
下面进行处理:
package com.ustc.mobilemanager.db.dao;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class NumberAddressQueryUtils {
private static String path = "data/data/com.ustc.mobilemanager/files/address.db";
/**
*
* 传一个号码进来,查询号码的归属地
*
* @param number
* @return
*/
public static String queryNumber(String number) {
String address = number;
// path 把数据库拷贝到data/data/包名/files/address.db
SQLiteDatabase database = SQLiteDatabase.openDatabase(path, null,
SQLiteDatabase.OPEN_READONLY);
// 手机号码的正则表达式
if (number.matches("^1[34568]\\d{9}$")) {
// 手机号码
Cursor cursor = database
.rawQuery(
"select location from data2 where id = (select outkey from data1 where id = ?)",
new String[] { number.substring(0, 7) });
while (cursor.moveToNext()) {
String location = cursor.getString(0);
address = location;
}
cursor.close();
} else {
// 其他的电话号码
switch (number.length()) {
case 3:
// 110 120 119等等
address = "特殊号码:匪警号码";
break;
case 4:
address = "模拟器";
break;
case 5:
// 10086
address = "客户号码";
break;
case 7:
//
address = "本地号码";
break;
case 8:
//
address = "本地号码";
break;
default:
// 处理长途电话
if (number.length() > 10 && number.startsWith("0")) {
// 010--->10 010-59790386
Cursor cursor = database.rawQuery(
"select location from data2 where area = ?",
new String[] { number.substring(1, 3) });
while (cursor.moveToNext()) {
String location = cursor.getString(0);
address = location.substring(0, location.length() - 2);
}
cursor.close();
//0855-59790386
cursor = database.rawQuery(
"select location from data2 where area = ?",
new String[] { number.substring(1, 4) });
while (cursor.moveToNext()) {
String location = cursor.getString(0);
address = location.substring(0, location.length() - 2);
}
}
break;
}
}
return address;
}
}