Android中手機號碼歸屬地查詢實現
來源:易賢網 閱讀:1348 次 日期:2015-02-10 10:25:39
溫馨提示:易賢網小編為您整理了“Android中手機號碼歸屬地查詢實現”,方便廣大網友查閱!

這部分是昨天學習的,但是因為眼睛超負荷所以拖到現在,以后要合理規劃時間。

目前手機里面的號碼歸屬地查詢主要是通過兩種方式:1.聯網查詢,2.匹配本機歸屬地數據庫。

我認為兩種結合方式最好,在本地數據庫中匹配不到的在進行聯網查詢,能大大增加匹配效果,并且不用過于增加本地數據庫容量而增大安裝包大小。

步驟:1.開啟軟件的時候把數據庫從assets目錄拷貝到files目錄下,如果已存在,則不用重新拷貝。

2.實現界面。

3.實現工具類PhoneAddressUtils的getPhoneAddress()方法

4.在界面類activity里調用工具類方法得到地址兵顯示出來。

首先是復制數據庫的操作:

private void copyDB() {

File file = new File(getFilesDir(), "address.db");

if(file.exists()&&file.length()>0) {

Toast.makeText(this, "已經復制數據庫", 0).show();

} else {

try {

AssetManager am = getAssets();

byte[] buffer = new byte[1024];

InputStream is = am.open("address.db");

FileOutputStream fis = new FileOutputStream(file);

int len = 0;

while((len=is.read(buffer))>0) {

fis.write(buffer, 0, len);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

因為運行中工具類得不到assets目錄下的文件,所以要在在開機啟動的SplashActivity中把數據庫拷貝到files目錄下。

獲得assert目錄下的文件要用AssetManager對象的open()方法,打開文件返回輸入流。

實現界面:就一個簡單的輸入框,按鈕,顯示框就行。

工具類:

package com.itheima.mobilesafe.db.dao;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

public class AddressDao {

private static String path = "data/data/com.itheima.mobilesafe/files/address.db";

public static String getAddress(String number) {

String address = number;

if(number.matches("^1[34568]\d{9}$")) {

String sql = "select location from data2 where id = (select outkey from data1 where id= ?)";

SQLiteDatabase database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);

Cursor cursor = database.rawQuery(sql, new String[] {number.substring(0, 7)});

while(cursor.moveToNext()) {

address = cursor.getString(0);

}

cursor.close();

database.close();

} else {

address = "不是手機號碼";

}

return address;

}

}

調用顯示:

點擊按鈕時:

public void queryAddress(View view) {

String number = et_phone.getText().toString();

String address = AddressDao.getAddress(number);

et_address.setText(address);

}

但是我們要動態的顯示位置,所以要對輸入框加一個TextChangedListener,當輸入字符串大于3的時候,自動調用進行匹配顯示出來。

et_phone.addTextChangedListener(new TextWatcher() {

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

// TODO Auto-generated method stub

if(s.length()>3) {

String address = AddressDao.getAddress(s.toString());

et_address.setText(address);

}

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

// TODO Auto-generated method stub

}

@Override

public void afterTextChanged(Editable s) {

// TODO Auto-generated method stub

}

});

更多信息請查看IT技術專欄

更多信息請查看數據庫
易賢網手機網站地址:Android中手機號碼歸屬地查詢實現
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看