訪問聯繫人首先你要找到uri的路徑:
<1>content://com.android.contacts/raw_contacts(獲得聯繫人的id,姓名)
<2>content://com.android.contacts/raw_contacts/"+id+"/data(根據聯繫人的id獲得聯繫人的信息)
在寫之前要寫一個權限(讀取聯繫人):
<!--讀取聯繫人權限-->
<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
1.界面就寫了一個Button
2.在MainActivity.java中中寫了一個點擊的方法:
public void getContacts(View view){
//獲取聯繫人的ID及名字
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Cursor cursor=cr.query(uri,null,null,null,null);
while(cursor.moveToNext()){
//id
int id=cursor.getInt(cursor.getColumnIndex("_id"));
//nane
String name=cursor.getString(cursor.getColumnIndex("display_name"));
Log.i("test",id+" "+name);
//根據聯繫人的ID獲取聯繫人相對應的數據(每個id的全部數據)
Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");
Cursor cursorData=cr.query(uriData,null,null,null,null);
while(cursorData.moveToNext()){
String data1=cursorData.getString(cursorData.getColumnIndex("data1"));
// 會出這個錯(Failed to read row 0, column -1 from a CursorWindow which has 1 rows, 79 columns.)肯定是類名寫錯了
int type=cursorData.getInt(cursorData.getColumnIndex("mimetype_id"));
//訪問聯繫人不能用這個表的類名,要調用另一個表中的中的列
// String type=cursorData.getString(cursorData.getColumnIndex("mimetype"));
//判斷vnd.android.cursor.item/phone_v2是這個就顯示
if("vnd.android.cursor.item/phone_v2".equals(type)){
Log.i("test"," "+data1+" "+type);
}
}
}
}