❶ 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