首先要有一个号码归属地的数据库,然后把这个数据库放进assets目录下,之后在闪屏页里读取这个数据库,
放到data/data/包名/files目录下、
最后就是对这个数据库进行操作了
在闪屏页拷贝数据库文件
private void copyDB(String dbname){ File targetFile = new File(getFilesDir(),dbname); if(targetFile.exists()){ System.out.println("已经存在了"); return; } FileOutputStream fos = null; InputStream in = null; try { fos = new FileOutputStream(targetFile); in = getAssets().open(dbname); int len = 0; byte[] b = new byte[1024]; while((len=in.read(b))!=-1){ fos.write(b, 0, len); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(in!=null){ try { in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(fos!=null){ try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
然后具体查询操作
package com.itheima.db.dao; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class AddressDao { private static final String PATH = "data/data/com.itheima.superman/files/address.db"; public static String findAddress(String phoneNumber) { String address="未知号码"; // 读取一个数据库文件 if(phoneNumber.matches("^[1]([3][0-9]{1}|59|58|88|89)[0-9]{8}$")){ SQLiteDatabase database = SQLiteDatabase.openDatabase(PATH, null, SQLiteDatabase.OPEN_READONLY); Cursor cu = database.rawQuery( "select location from data2 where id=(select outkey from data1 where id=?)", new String[] {phoneNumber.substring(0,7)}); if(cu.moveToNext()){ address = cu.getString(0); } cu.close(); database.close(); } return address; } }