編輯:關於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();
}
}
}獲得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
}
});
Android UI實現單行文本水平觸摸滑動效果
本文實例為大家分享了單行文本水平觸摸滑動效果,通過EditText實現TextView單行長文本水平滑動效果。下一篇再為大家介紹 多行文本折疊展開效果,自定義布局View
android編程實現懸浮窗體的方法
本文實例講述了android編程實現懸浮窗體的方法。分享給大家供大家參考,具體如下:突然對懸浮窗體感興趣,查資料做了個小Demo,效果是點擊按鈕後,關閉當前Activit
Android苦手的App之旅(XMind默認Style修改)
這倆天讀Google關於Android下Media開發的Sample,Media相關類庫結構復雜,時序難以理解,所以操起個人最喜歡的“看代碼”工具
最常用和最難用的Android控件ListView
ListView允許用戶通過手指上下滑動的方式將屏幕外的數據滾動到屏幕內,同時屏幕上原有的數據則會滾動出屏幕.1. ListView的簡單用法首先新建一個ListView