32号码归属地代码的实现

来源:互联网 发布:辐射4bodyslide数据 编辑:程序博客网 时间:2024/04/29 04:46

在SplashActivity中拷贝数据库到data/data/包名/files/address.db,并且第一次拷贝完成之后,后面启动应用不需要再次拷贝。

/** * 拷贝号码归属地数据库 * 把数据库拷贝到data/data/包名/files/address.db */private void copyDB() {//第一次拷贝之后  后面启动不再需要拷贝try {File file = new File(getFilesDir(),"address.db");if (file.exists() && file.length()>0) {//不需要拷贝了Log.i(TAG, "不需要拷贝了");}else {InputStream is  = getAssets().open("address.db");FileOutputStream fos = new FileOutputStream(file);byte[] buffer = new byte[1024];int len = 0;while ((len = is.read(buffer)) != -1) {fos.write(buffer, 0, len);}is.close();fos.close();}} catch (IOException e) {e.printStackTrace();}}



注意API:getFileDir的用法。以及复制asset目录下的文件的方法。

然后使用去查询:

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.dbSQLiteDatabase database = SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READONLY);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();return address;}}

最后是调用:

/** *  * 查询号码归属地的按钮的点击事件 *  *  * @param view */public void query(View view){String phoneNumber = ed_phone.getText().toString().trim();if (TextUtils.isEmpty(phoneNumber)) {//Toast.makeText(this, "号码为空!", Toast.LENGTH_LONG).show();return;}else {//数据库查询号码归属地//写一个工具类,去查询数据库String address  = NumberAddressQueryUtils.queryNumber(phoneNumber);Log.i(TAG, "查询的号码为:" + phoneNumber);address_result.setText(address);}}

查询的结果:




0 0
原创粉丝点击