[android] 手機衛士號碼歸屬地查詢

来源:http://www.cnblogs.com/taoshihan/archive/2016/04/21/5419393.html
-Advertisement-
Play Games

使用小米號碼歸屬地資料庫,有兩張表data1和data2 先查詢data1表,把手機號碼截取前7位 select outkey from data1 where id=”前七位手機號” 再查詢data2表, select location from data2 where id=”上面查出的outk ...


使用小米號碼歸屬地資料庫,有兩張表data1data2

先查詢data1表,把手機號碼截取前7

select outkey from data1 where id=”前七位手機號”

再查詢data2表,

select location from data2 where id=”上面查出的outkey

可以使用子查詢

select location from data2 where id=(select outkey from data1 where id=”前7位手機號”)

 

創建資料庫工具類

新建一個包xxx.db.dao

新建一個類NumberAddressUtils,新建一個靜態方法queryNumber

調用SQLiteDatabase.openDatabase()方法,獲取到SQLiteDatabase對象,參數:資料庫路徑(/data/data/包名/files/xxx.db),游標工廠(null),打開方式(SQLiteDatabse.OPEN_READONLY

把資料庫address.db拷貝到 /data/data/包名/files/目錄裡面

 

調用SQLiteDatabase對象的rawQuery()方法,獲取到Cursor對象,查詢數據,參數:sql語句,string[]條件數組

例如:select location from data2 where id=(select outkey from data1 where id=?) new String[]{phone.subString(0,7)}

 

while迴圈Cursor對象,條件調用Cursor對象的moveToNext()方法

迴圈中調用Cursor對象的getString()方法,傳入欄位索引

 

關閉游標Cursor對象的close()方法

把得到的地址返回出去

 

拷貝資料庫從assets目錄到data目錄

在歡迎頁面,進行拷貝

調用getAssets().open()方法,得到InputStream對象,參數:xxx.db文件名

獲取File對象,new出來,參數:getFilesDir()獲取到/data/data//files/目錄,xxx.db

獲取FileOutputStream對象,new出來,參數:File對象

定義緩衝區byte[] buffer,一般1024

定義長度len

while迴圈讀取,條件:讀入的長度不為-1

迴圈中調用FileOutputStream對象的write()方法,參數:緩衝區,從0開始,len長度

調用InputStream對象的close()方法

 

判斷只要存在和長度大於0就不再拷貝了,調用File對象的exist()方法和length()方法大於0

NumberQueryAddressUtil.java

 

package com.qingguow.mobilesafe.utils;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class NumberQueryAddressUtil {
    private static final String path = "/data/data/com.qingguow.mobilesafe/files/address.db";
    /**
     * 查詢號碼歸屬地
     * @param phone
     * @return
     */
    public static String queryAddress(String phone){
        SQLiteDatabase db=SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READONLY);
        Cursor cursor=db.rawQuery("select location from data2 where id=(select outkey from data1 where id=?)", new String[]{phone.substring(0,7)});
        while(cursor.moveToNext()){
            String address=cursor.getString(0);
            return address;
        }
        cursor.close();
        return "";
    }
}

拷貝資料庫

    private void copyAddressDatabase() {
        try {
            //判斷是否存在
            File file = new File(getFilesDir(), "address.db");
            if (file.exists() && file.length() > 0) {
                return;
            }
            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 (Exception e) {
            e.printStackTrace();
        }

    }

 

相關技術:

知乎:android如何為listview設置自定義字體?

listview無法使用setTypeface

 

就像知乎app側滑菜單這樣的,像首頁,發現,關註,收藏,草稿,提問這幾個字如何更改為自定義的字體呢?

 

Allan

我預設你說的自定義字體是指使用外部 ttf 字體文件

1. main/assets/fonts 下放置 ttf 字體

2. 讀取 ttf 字體文件

Typeface mTypeface = Typeface.createFromAsset(getAssets(), "fonts/XXXXX.ttf");

3. 自定義 Button/TextView/EditText 等控制項

setTypeface(getYourTypeface());

 

知乎:為什麼大多數時候OutputStream都要被向上轉型?

OutputStream os= new FileOutputStream()

為什麼不直接這樣:

FileOutputStream fos = new FileOutputStream()

得到一個OutputStream這個抽象類的實例有什麼意義?

 

資深鐵鏽:

這樣寫是實現多態, 可以降低類之間的依賴性,可以使程式代碼更加健壯。如果會用Spring框架的話,這樣寫帶來的好處自然能夠體會到。

另外:OutputStream os= new FileOutputStream() ; 得到一個OutputStream這個抽象類的實例這樣說是不對的,抽象類是沒有實例的,應該是得到OutputStream 的引用,FileOutputStream的實例。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <ignore_js_op> 源碼下載:http://code.662p.com/view/13343.html 源碼下載:http://code.662p.com/view/13343.html 源碼下載:http://code.662p.com/view/13343.html 作者ymcao,源 ...
  • BingoWorld介紹BingoWorld是一款IT閱讀學習類的開源軟體,在不久的將來會擁有豐富的學習內容,包含Android、iOS技術文章和相關面試題等。推薦您也來用用來看看,您也可以發佈自己的Bingo鏈接文章。該APP是通過新浪微博登錄的,為防止大家clone下來後無法編譯和不能正常使用微 ...
  • 作者nuptboyzhb,源碼newplanegame,新版飛機大戰是一款以真實戰機為模板的飛行射擊類游戲,體驗新穎,玩法炫酷。一樣的經典,不一樣的體驗。飛機模型基於目前的主流戰機:包括美國F16,F22,法國幻影2000等機型模型,真實機型任你選。 源碼下載:http://code.662p.co ...
  • Fragment 源碼:http://www.jinhusns.com/Products/Download/?type=xcj Android是在Android 3.0 (API level 11)開始引入Fragment的。 可以把Fragment想成Activity中的模塊,這個模塊有自己的佈局 ...
  • 一,效果圖。 二,工程圖。 三,代碼。 RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UIScrollViewDelegate,UITableViewDel ...
  • 關於方法前的 + - 符號 MyClass.alloc().init(foo.bar()).autorelease(); ...
  • 很多人一提到Binder就說代理模式,人云亦云的多,能理解精髓的少。 本篇文章就從設計角度分析一下java層BInder的設計目標,以及設計思路,設計缺陷,從而駕馭它。 對於【邦德兒】的理解, 從通信的角度來看,就是一種通信方式而已,與socket沒有任何區別。客戶端transact,服務端onTr ...
  • 通過使用單行代碼完成同樣的 10 個練習,我們來看看 Swift 和其他語言之間的較量。 將數組中每個元素的值乘以 2 使用map來實現 代碼簡單明瞭地完成了數組元素乘2 求一組數字的和 這個問題可以通過使用 reduce 方法和加號運算符解決,這是因為加號運算符實際上也是一個函數。不過這個解法是非 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...