Android实现归属地查询功能

  实现归属地查询大体有两种方法可以实现,一种是通过归属地API进行查询,另一种是查询本地数据库。两种方法各有优劣,最好结合起来使用,我本次采用的是查询数据库的方法。首先需要从网上下载归属地数据库callHomeDB.db。CSDN就可以下载。

  下载好数据库之后,可以利用一个小软件SQLite Expert Professional对数据库进行查看,同时该软件也支持对SQL语句进行操作。

  有了数据库之后就可以进行代码编写了:

  1. 将数据库文件复制到Android Studio工程目录assets下。

  2. 对数据库进行复制,将assets目录下的数据库复制到工程目录下:

     /**
     * 复制数据库
     */
    private void copyDB(final String dbname){
        new Thread(){
            public void run(){
                try {
                    File file = new File(getFilesDir(),dbname);
                    if (file.exists()&&file.length()>0){
                        Log.i("VirusScanActivity","数据库已存在");
                        return;
                    }
                    InputStream is = getAssets().open(dbname);
                    FileOutputStream fos = openFileOutput(dbname,MODE_PRIVATE);
                    byte[] buffer = new byte[1024];
                    int len = 0;
                    while((len=is.read(buffer))!=-1){
                        fos.write(buffer,0,len);
                    }
                    is.close();
                    fos.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }.start();
    }

  3. 对数据库执行查询语句,获取查询结果

    public static String checkCallHome(String phonenumber){
        String desc = null;

        SQLiteDatabase db = SQLiteDatabase.openDatabase("data/data/com.example.user.callhomedemo/files/callHomeDB.db",null,SQLiteDatabase.OPEN_READONLY);
        Cursor cursor = db.rawQuery("select * from mob_location where _id = ?",new String[]{phonenumber.substring(0,7)});
        if (cursor.moveToNext()){
            desc = cursor.getString(1);
        }
        cursor.close();
        db.close();
        return desc;
    }

   演示图片如下:

  

时间: 2024-10-13 12:35:54

Android实现归属地查询功能的相关文章

Android有道词典查询功能

有道词典 任务要求:完成查词等功能 因为需要申请API key,这里直接给出地址供使用:http://fanyi.youdao.com/openapi?path=data-mode 1.activity_main.xml基本格局(不做任何说明) 代码如下: 1 <RelativeLayout 2 xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas

012_04号码归属地查询的四种方式

1 package com.example.day12_04phonenumberqurey; 2 3 import java.io.InputStream; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 import org.apache.http.Header; 7 import org.json.JSONException; 8 import org.json.JSONObject; 9 import org.x

android 使用http请求查询手机号码归属地(转)

归属地数据源 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx webxml网站还支持其他请求方式 如SOAP等等 界面比较简单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

微信公众平台开发(35)(天气预报、股票查询、手机归属查询、在线听音乐、翻译、成绩查询功能)代码分享

微信公众平台开发应用(天气预报.股票查询.手机归属查询.在线听音乐.翻译.成绩查询功能) 原文: http://www.cnblogs.com/imaker/p/5491433.html 1.xml(信息返回用扩展语言XML来传递值) $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr

Android中手机号码归属地查询实现

这部分是昨天学习的,但是因为眼睛超负荷所以拖到现在,以后要合理规划时间. 目前手机里面的号码归属地查询主要是通过两种方式:1.联网查询,2.匹配本机归属地数据库. 我认为两种结合方式最好,在本地数据库中匹配不到的在进行联网查询,能大大增加匹配效果,并且不用过于增加本地数据库容量而增大安装包大小. 步骤:1.开启软件的时候把数据库从assets目录拷贝到files目录下,如果已存在,则不用重新拷贝. 2.实现界面. 3.实现工具类PhoneAddressUtils的getPhoneAddress(

Android实例-手机安全卫士(三十四)-优化归属地查询

一.目标 1.处理110.10086.座机等非手机号码的归属地: 二.代码实现 1.判断输入框中的文本是否符合手机号码的格式(1开头,第二位是345678,后面9位均为0-9的整数),根据手机号码的特点确定其正则表达式为“1[345678]\d{9}”,在代码中正则表达式以“^”开头,以“$”结束,同时里面的“\”需要转义,所以判断条件为“^1[345678]\\d{9}$”.上述正则表达式说明:[345678]表示“[]”里面的数任取一个,\d表示0-9的数任取一个,{9}表示前面的\d正好匹

android 使用http请求查询手机号码归属地

归属地数据源 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx webxml网站还支持其他请求方式 如SOAP等等 界面比较简单 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" an

手机归属地查询

手机归属地查询 效果图: 分析: 1.传递多个参数,用一个类就好 2.打开数据库 private SQLiteDatabase database; database=SQLiteDatabase.openOrCreateDatabase(file, null); file是数据库的路径 3.在逻辑中多加判断 比如是否获取到正确的手机号 比如我们操作的字符串是否为空 比如时候获取正确参数 4.通过文件流来实现释放APK中包中的数据库文件到手机本地 5.需要用的数据库放在assets目录中 buff

android闹钟小案例之功能阐述

最近花了一个星期左右的时间做了一个小闹钟,现在回过头来进行总结下.刚开始接触这个案例,总体觉着没有太大的难度,都是一些基础知识的堆砌,可现实总比理想残酷啊,这几天下来,每天都会有意料之外的bug出现.在debug的过程中,深深体会到了百度一下和谷歌谷歌的用处,基本常见的问题都可以在这里得到提示甚至答案.这篇文章先来介绍下这个案例所实现的功能,接下来再用几遍文章记录所用到的知识点. 功能简介: 1.闹钟基本功能:和平时的闹钟一样,用户在界面选择闹钟响起的时间,到达所设定时间后执行相应的指定操作.