❶ android开发怎样获取通讯录联系人信息
要获取通讯录的联系人信息,只有通过系统联系人应用的内容提供者,才能访问到联系人数据库,下面有一个代码演示
代码演示
java">privateArrayList<HashMap<String,String>>readContact(){
//首先,从raw_contacts中读取联系人的id("contact_id")
//其次,根据contact_id从data表中查询出相应的电话号码和联系人名称
//然后,根据mimetype来区分哪个是联系人,哪个是电话号码
UrirawContactsUri=Uri
.parse("content://com.android.contacts/raw_contacts");
UridataUri=Uri.parse("content://com.android.contacts/data");
ArrayList<HashMap<String,String>>list=newArrayList<>();
//从raw_contacts中读取联系人的id("contact_id")
CursorrawContactsCursor=getContentResolver().query(rawContactsUri,
newString[]{"contact_id"},null,null,null);
if(rawContactsCursor!=null){
while(rawContactsCursor.moveToNext()){
StringcontactId=rawContactsCursor.getString(0);
//System.out.println(contactId);
//根据contact_id从data表中查询出相应的电话号码和联系人名称,实际上查询的是视图view_data
CursordataCursor=getContentResolver().query(dataUri,
newString[]{"data1","mimetype"},"contact_id=?",
newString[]{contactId},null);
if(dataCursor!=null){
HashMap<String,String>map=newHashMap<String,String>();
while(dataCursor.moveToNext()){
Stringdata1=dataCursor.getString(0);
Stringmimetype=dataCursor.getString(1);
//System.out.println(contactId+";"+data1+";"
//+mimetype);
if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
map.put("phone",data1);
}elseif("vnd.android.cursor.item/name"
.equals(mimetype)){
map.put("name",data1);
}
}
list.add(map);
dataCursor.close();
}
}
rawContactsCursor.close();
}
returnlist;
}
手机联系人图片:
❷ Android 联系人数据库介绍以及对联系人的基本操作
参考如下内容:
一、 联系人数据库
联系人的数据库文件的位置
/data/data/com.android.providers.contacts/databases.contacts2.db
数据库中重要的几张表
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侧的联系人的操
作后续介绍。
如果对联系人的基本操作,我们必须得到许可。
方法就是在AndroidManifest.xml文件中配置如下权限:
<uses-permission android:name="android.permission.READ_CONTACTS"
/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"
/>
读取联系人
分为以下步骤:
1、先读取contacts表,获取ContactsID;
2、再在raw_contacts表中根据ContactsID获取RawContactsID;
3、然后就可以在data表中根据RawContactsID获取该联系人的各数据了。
[html] view plain
// 获取用来操作数据的类的对象,对联系人的基本操作都是使用这个对象
ContentResolver cr = getContentResolver();
// 查询contacts表的所有记录
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null,
null, null);
// 如果记录不为空
if (cur.getCount() > 0)
{
// 游标初始指向查询结果的第一条记录的上方,执行moveToNext函数会判断
// 下一条记录是否存在,如果存在,指向下一条记录。否则,返回false。
while (cur.moveToNext())
{
String rawContactsId = "";
String id =
cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
str += "ID:" + id + "\n";二、对联系人的基本操作(4)
// 读取rawContactsId
Cursor rawContactsIdCur = cr.query(RawContacts.CONTENT_URI,
null,
RawContacts.CONTACT_ID +" = ?",
new String[]{id}, null);
// 该查询结果一般只返回一条记录,所以我们直接让游标指向第一条记录
if (rawContactsIdCur.moveToFirst())
{
// 读取第一条记录的RawContacts._ID列的值
rawContactsId =
rawContactsIdCur.getString(rawContactsIdCur.getColumnIndex(
RawContacts._ID));
}
rawContactsIdCur.close();
[html] view plain
// 读取号码
If (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.
Contacts.HAS_PHONE_NUMBER))) > 0)
{
// 根据查询RAW_CONTACT_ID查询该联系人的号码
Cursor PhoneCur =
cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +" =
?",
new String[]{rawContactsId}, null);
// 上面的ContactsContract.CommonDataKinds.Phone.CONTENT_URI
❸ 根据手机号码查询常用联系人
咨询记录 · 回答于2021-12-13
❹ 用安卓手机如何查询本机号码
vivo手机可进入手机设置--(应用与权限)--(系统应用设置)--电话--号码中,即可查看手机的本机号码。
部分SIM卡无显示,可以自行添加显示,也可以拨打朋友的手机确认自己的号码。
❺ android如何获取通讯录联系人信息,并显示出来
查询数据库,一般联系人的信息都存储在contacts2.db这个数据库中,你可以通过ContentProvider来查询,联系人的信息的表结构比较复杂,不知道你想要查询什么样的信息?
❻ 安卓手机有没有可以查询联系人的手机软件
来电号码的归属显示是属于手机的第三方应用,由于手机系统来电时候没有给系统通知导致了这个问题,目前还没有苹果授权的这样类型的第三方软件,现在一些说有来电显示功能的软件对系统进行了修改,导致对很多软件的系统兼容性会有一些问题,推荐你装一个91助手,有比较庞大的归属地查询库,他是一款比较好的手机管理软件。
推荐给你两款,一个是“联系人定位“软件可以去安卓网下载,软件以电话薄为基础,通过与联系人建立绑定关系实现位置与即时消息的通讯;一个是91助手,直接在联系人中进行定位查找,不用注册直接可以使用。定位一般都是大范围的,不过91助手的相对要精确一点,你可以两款都试下。
❼ android通讯录里查找联系人那里怎么做的,就是比如在搜索框里输入一个张,所有姓张的就显示在listview里
代码什么的,就不实现了.思路就是,给你的EditText加一个实时监听,只要这个控件里面发生变化了,就马上根据输入的字进行模糊查询.得到返回值就更新,listview.另外不知道你的编程习惯怎样.最好要创建一个与你list item对应的javabean,在listview的adapter getview里面用list<bean>的方式读取数据.再创建一个setbean(bean)方法,里面写更新语句.....不建议重新setadapter来更新界面.
❽ 怎样取得android短信数据库中发件人收件人的名字
短信数据库中不会存储姓名,只会存储recipient的号码。
thread表中的recipient_ids字段标示该会话有哪些收件人,收件人/发件人的具体信息会存放在canonical_addresses表中。
根据号码查询联系人数据库,即可获取收件人的姓名等信息
联系人的查询方法请参照 Contact.java 中的getContactInfoForPhoneNumber(String number)
http://androidxref.com/5.1.1_r6/xref/packages/apps/Mms/src/com/android/mms/data/Contact.java