android项目查询号码归属地

首先要有一个号码归属地的数据库,然后把这个数据库放进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;

    }
}
时间: 2024-10-19 21:06:55

android项目查询号码归属地的相关文章

在java中如何根据手机号查询号码归属地

1.maven项目中配置 <dependency><groupId>com.googlecode.libphonenumber</groupId><artifactId>geocoder</artifactId><version>2.15</version></dependency> <dependency><groupId>com.googlecode.libphonenumber&l

如何批量查询号码归属地,可以导入表格xlsx、txt直接查询

我发现这个程序写的还不错,批量批量查询号码归属地.公司做业务的时候需要. 程序可以从输入框导入手机号码,进行批量查询号码的归属地信息,详细信息有:省份.城市.运营商. 直接导入电子表格Excel文件查询,也可以导入txt.csv等文件. 程序在这里: 批量查询号码的归属地信息 省份.城市.运营商 程序界面: 查询速度很快,几乎是5秒内能5万数据. 说是一次能查几十万,程序做的挺好 查询结果是这样的 导出的Excel文件,根据不同的列,在表格也能非常方便筛选,可以按省份筛选.按城市筛选.按号码运营

手机安全卫士------查询号码归属地

效果图: 技术点: 数据库的查询操作 正则表达式 监听输入框的输入事件 思路: 查询号码归属地的方法有两种: 1.网络查询,通过网上的一些接口,可以查询到JSON数据等 2.本地查询,APK中,自带一个数据库,放置号段对应的地点信息 考虑到用户的使用场景,决定采用本地查询的方式来实现这个功能. 本功能采用的是 小米提供的数据库. 内部有两张表: data1: id:手机号码的前七位 outkey:外键 data2: id:对应表1中的外键 location:位置 area:区号 查询手机号码的思

[android] 手机卫士来电显示号码归属地

继续N天前的项目 开启服务监听手机来电,查询数据库,显示归属地 详细内容可以参考这篇博文:http://www.cnblogs.com/taoshihan/p/5331232.html AddressService.java package com.qingguow.mobilesafe.service; import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil; import android.app.Service; import

android 如何关闭来电号码归属地

MTK平台号码归属地分为两种:1.手机号码归属地:2.固话号码归属地: 手机号码归属地: 是MTK自己做的,关闭只需要关闭MTK_PHONE_NUMBER_GEODESCRIPTION这个option即可: 数据库文件所在路径为 alps/mediatek/external/geocoding/geocoding.db: 仅支持汉语. 固话号码归属地: 是Google Android系统自带的,关闭需要注解掉Google的原始code: 数据库文件所在路径为 alps/external/libp

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

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

Android项目开发第五周

本周进展:本周是此次Android项目开发最后一周,按照进度基本上完成了Android游戏开发的各项任务. 总的开发报告如下: 1.需求分析: 当前移动互联网快速发展,人们生活逐渐趋于多元化,以智能手机为代表的电子产品逐渐受到人们的追捧,手机游戏渐渐地成为了人们休闲娱乐的一种方式.本款软件是一款基于Android系统下采用2.5D技术开发的休闲益智类塔防游戏.塔防游戏是目前市场上比较流行的一类游戏. 2.系统设计: 本游戏的策划主要包含:游戏类型定位.呈现技术以及目标平台的确定等工作. 游戏类型

Android项目开发全程(二)--Afinal用法简单介绍

本篇博文接上篇的<Android项目开发全程(一)--创建工程>,主要介绍一下在本项目中用到的一个很重要的框架-Afinal,由于本系列博文重点是项目开发全程,所以在这里就先介绍一下本项目中用到的几个功能: Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题. Af