android 怎样通过手机号模糊查询联系人

android 怎样通过手机号模糊查询联系人,第1张

你可以下载一个电话本软件,在应用宝上有好多个版本的在电话本软件的手机号码设置上有一个加号点击一下会提示添加新的号码你可以依次填写所有人的电话号码来进行轻松记录软件下载可以根据应用宝上的详细介绍轻松获取资源还是比较多的,我下载都会用应用宝,安全性高兼容性还强

具体方法如下:

主要功能代码如下:

1234567891011121314151617181920212223242526272829303132333435363738394041

/  获取SIM卡运营商   @param context  @return /public static String getOperators(Context context) { TelephonyManager tm = (TelephonyManager) context  getSystemService(ContextTELEPHONY_SERVICE); String operator = null; String IMSI = tmgetSubscriberId(); if (IMSI == null || IMSIequals("")) { return operator; } if (IMSIstartsWith("46000") || IMSIstartsWith("46002")) { operator = "中国移动"; } else if (IMSIstartsWith("46001")) { operator = "中国联通"; } else if (IMSIstartsWith("46003")) { operator = "中国电信"; } return operator;} /  手机型号   @return /public static String getPhoneModel() { return androidosBuildMODEL;} /  系统版本   @return /public static String getSystemVersion() { return androidosBuildVERSIONRELEASE;}

权限代码如下:

1

<uses-permission android:name="androidpermissionREAD_PHONE_STATE"/>

希望本文所述对大家的Android程序设计有所帮助

您可能感兴趣的文章:

Android4X中SIM卡信息初始化过程详解

Android获取手机通讯录、sim卡联系人及调用拨号界面方法

android监控sim卡有没有服务示例(sim卡管理)

Android读取用户号码,手机串号,SIM卡序列号的实现代码

Android 判断SIM卡属于哪个移动运营商的实现代码

Android81 源码修改之插入SIM卡默认启用Volte功能

您好,很高兴为您解答。

一、 联系人数据库

 联系人的数据库文件的位置

/data/data/comandroidproviderscontacts/databasescontacts2db

 数据库中重要的几张表

1、contacts表

该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的

ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加

到收藏夹等信息。

2、raw_contacts表

该表保存了所有创建过的手机测联系人,每个联系人占一行,表里有一列标

识该联系人是否被删除,该表保存了两个ID:RawContactID和ContactID,

从而将contacts表和raw_contacts表联系起来。该表保存了联系人的

RawContactID、ContactID、联系次数、最后一次联系的时间、是否被添

加到收藏夹、显示的名字、用于排序的汉语拼音等信息。

3、 mimetypes

该表定义了所有的MimeTypeID,即联系人的各个字段的唯一标志。

4、data表

 该表保存了所有创建过的手机测联系人的所有信息,每个字段占一行 ,该表

保存了两个ID:MimeTypeID和RawContactID,从而将data表和

raw_contacts表联系起来。

 联系人的所有信息保存在列data1至data15中,各列中保存的内容根据

MimeTypeID的不同而不同。如保存号码(MimeTypeID=5)的那行数据中,

data1列保存号码,data2列保存号码类型(手机号码/家庭号码/工作号码等)。

二、对联系人的基本 *** 作

 这里的基本 *** 作只是针对手机测的联系人,(U)SIM侧的联系人的 ***

作后续介绍。

 如果对联系人的基本 *** 作,我们必须得到许可。

方法就是在AndroidManifestxml文件中配置如下权限:

<uses-permission android:name="androidpermissionREAD_CONTACTS" 

/>

<uses-permission android:name="androidpermissionWRITE_CONTACTS" 

/>

读取联系人

分为以下步骤:

1、先读取contacts表,获取ContactsID;

2、再在raw_contacts表中根据ContactsID获取RawContactsID;

3、然后就可以在data表中根据RawContactsID获取该联系人的各数据了。

// 获取用来 *** 作数据的类的对象,对联系人的基本 *** 作都是使用这个对象  

ContentResolver cr = getContentResolver();  

// 查询contacts表的所有记录  

Cursor cur = crquery(ContactsContractContactsCONTENT_URI, null, null,   

null, null);  

// 如果记录不为空  

if (curgetCount() > 0)  

{  

// 游标初始指向查询结果的第一条记录的上方,执行moveToNext函数会判断  

// 下一条记录是否存在,如果存在,指向下一条记录。否则,返回false。  

while (curmoveToNext())  

{  

    String rawContactsId = "";  

    String id =   

        curgetString(curgetColumnIndex(ContactsContractContacts_ID));  

    str += "ID:" + id + "\n";二、对联系人的基本 *** 作(4)  

    // 读取rawContactsId  

    Cursor rawContactsIdCur = crquery(RawContactsCONTENT_URI,   

        null,  

        RawContactsCONTACT_ID +" = ",    

        new String[]{id}, null);  

    // 该查询结果一般只返回一条记录,所以我们直接让游标指向第一条记录  

    if (rawContactsIdCurmoveToFirst())  

    {  

    // 读取第一条记录的RawContacts_ID列的值  

    rawContactsId =   

        rawContactsIdCurgetString(rawContactsIdCurgetColumnIndex(  

        RawContacts_ID));  

    }  

    rawContactsIdCurclose();// 读取号码  

If (IntegerparseInt(curgetString(curgetColumnIndex(ContactsContract  

    ContactsHAS_PHONE_NUMBER))) > 0)  

{  

// 根据查询RAW_CONTACT_ID查询该联系人的号码  

Cursor PhoneCur =   

    crquery(ContactsContractCommonDataKindsPhoneCONTENT_URI,  

    null,  

    ContactsContractCommonDataKindsPhoneRAW_CONTACT_ID +" =   

    ",  

    new String[]{rawContactsId}, null);  

// 上面的ContactsContractCommonDataKindsPhoneCONTENT_URI  

// 可以用下面的phoneUri代替  

//  Uri phoneUri=Uriparse("content://comandroidcontacts/data/phones");二、对联系人的基本 *** 作(6)  

// 一个联系人可能有多个号码,需要遍历  

while (PhoneCurmoveToNext())  

{  

// 号获取码  

String number =   

    PhoneCurgetString(PhoneCurgetColumnIndex(  

    ContactsContractCommonDataKindsPhoneNUMBER));  

// 获取号码类型  

String numberType =   

PhoneCurgetString(PhoneCurgetColumnIndex(  

    ContactsContractCommonDataKindsPhoneTYPE));  

}  

PhoneCurclose();

新建联系人

新建联系人时, 根据contacts、raw_ contacts两张表中ID的使用情况,自动

生成ContactID和RawContactID。

Android源码新建重复姓名的联系人的ContactID是不重复的,所以会重复显

示。

用下面的代码新建联系人,如果多次新建的联系人的姓名是一样的,生成的

ContactID也会重复,RawContactID不会重复,我们在读取联系人的时候可

以获取所有同姓名联系人的号码等信息,在显示联系人的时候,重复姓名的

联系人的所有字段信息都会合并起来显示为一个联系人。

ContentValues values = new ContentValues();  

Uri rawContactUri =   

getContentResolver()insert(RawContactsCONTENT_URI, values);  

long rawContactId = ContentUrisparseId(rawContactUri);二、对联系人的基本 *** 作(8)  

// 向data表插入姓名数据  

if (name != "")  

{  

valuesclear();  

valuesput(DataRAW_CONTACT_ID, rawContactId);  

valuesput(DataMIMETYPE,   

StructuredNameCONTENT_ITEM_TYPE);  

valuesput(StructuredNameGIVEN_NAME, name);  

getContentResolver()insert(ContactsContractDataCONTENT_URI,   

values);  

}  

  

// 向data表插入电话数据  

if (phoneNum != "")  

{  

valuesclear();  

valuesput(DataRAW_CONTACT_ID, rawContactId);  

valuesput(DataMIMETYPE, PhoneCONTENT_ITEM_TYPE);  

valuesput(PhoneNUMBER, phoneNum);  

valuesput(PhoneTYPE, PhoneTYPE_MOBILE);  

getContentResolver()insert(ContactsContractDataCONTENT_URI,   

values);  

}

删除联系人

我们只需要将raw_contacts表中指定RawContactID的

行删除,其他表中与之关联的数据都会自动删除。

public void delete(long rawContactId)  

{  

getContentResolver()delete(ContentUriswithAppendedId(RawContac  

tsCONTENT_URI, rawContactId), null, null);  

}

更新联系人

联系人的所有信息都是保存在data表中,所以要更新联系人,我们只需要根

据RawContactID和MIMETYPE修改data表中的内容。

ContentValues values = new ContentValues();  

valuesput(PhoneNUMBER, “123");  

valuesput(PhoneTYPE, PhoneTYPE_MOBILE);  

String Where = ContactsContractDataRAW_CONTACT_ID + " =  AND   

" + ContactsContractDataMIMETYPE + " = ";  

String[] WhereParams = new String[]{"5", PhoneCONTENT_ITEM_TYPE};  

getContentResolver()update(ContactsContractDataCONTENT_URI,   

values, Where, WhereParams);

如若满意,请点击右侧采纳答案,如若还有问题,请点击追问

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~

Android通讯录管理(获取联系人、通话记录、短信消息)

>

需要设置监听:

   //在清单文件添加权限

     <uses-permission android:name="androidpermissionREAD_PHONE_STATE" />

     <uses-permission android:name="androidpermissionCALL_PHONE" />

     

    //获得电话管理器

    TelephoneManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

    //设置监听

    /

 参数 1:PhoneStateListener 对象

 参数 2:监听的内容,int 类型,该参数通常是常量,从 PhoneStateListener 中获取

/

tmlisten(mPhoneStateListener, PhoneStateListenerLISTEN_CALL_STATE);

//state:电话的状态

//incomingNumber:打进来的号码

private PhoneStateListener mPhoneStateListener = new PhoneStateListener(){

public void onCallStateChanged(int state, String incomingNumber) {

  //获取号码处理业务

}

}

以上就是关于android 怎样通过手机号模糊查询联系人全部的内容,包括:android 怎样通过手机号模糊查询联系人、android重新获取sim卡、Android 联系人数据库介绍以及对联系人的基本 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9544464.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存