最近在練習取得聯絡人資料時,總會發生Exception...
上網Google了一下,
才發現原來Android 2.0 SDK改了一些關於聯絡人存取的API,
如果使用了
import android.provider.Contacts;
import android.provider.Contacts.People;
就要特別注意一下,
因為在android 2.0 SDK當中不建議使用,
請改用
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
要取得聯絡人的姓名sample code如下:
final Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while(people.moveToNext())
{
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = people.getString(nameFieldColumnIndex);
}
奇怪的事,如果要取得聯絡人的電話
如果用
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);
String phone = people.getString(nameFieldColumnIndex);
nameFieldColumnIndex return回來的值總是 ─1,
上網google了一下,找到瞭解法,
1. 首先找到目標聯絡人的 _ID,例如要找第一個聯絡人的_ID
Cursor target = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
target.moveToFirst();
String contactId = cursor.getString(target.getColumnIndex(ContactsContract.Contacts._ID));
2. 接著透過_ID,來找電話號碼,電話號碼可能不只有一個,所以先判斷有無電話號碼
String IsPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
3. 如果有電話,接著再去query電話號碼
if( (Integer.parseInt(IsPhone) > 0) )
{
Cursor phoneNumber = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
String strPhoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
}
** 如果要查詢e-mail,程式如下
Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null);
while (emails.moveToNext())
{
String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
**只有在emulator上測試過,沒有在實際的機器上跑過
訂閱:
張貼留言 (Atom)
winsock2.h redefined問題
解法: #define _WINSOCKAPI_ // stops windows.h including winsock.h #include #include
-
昨天要回新竹的路上,差點A到一臺摩托車, 可以清楚看到路口是綠燈,可是這位老兄,竟然從左方過來要待轉, 旁邊的女騎士也差點A到他,尖叫了一聲... 緊急煞車的同時,第一次感受到ABS做動,還好平安無事... 奉勸大家車子一定要裝行車記錄器阿~
-
呼,終於寫到最後一篇了,我竟然拖了半年才寫完… 呵,不過總算是有始有終啦!! 最後一天的早上,是自由活動的時間,我們跟著導遊前往市區觀光, 一般名牌族的,會跟著導遊去購買包包、配件, 而我跟小丸子沒啥錢,只能在市區附近拍拍照, 首先,我們搭捷運前往市區, ...
-
離開了超級天堂海灘,接著,我們來到了天堂海灘, 由這張入門的壁畫,就知道,這裡可是天體營的”天堂”呢!!! 當然囉,猥褻的動作,一定是不能少的!!! 覺得自己好像是一個色老頭阿…^^” 入口處呢,還有一間鴿舍(?),連鴿舍都可以弄得很好看~ ...
1 則留言:
請問~那要怎麼取得多筆連絡人資料~要怎麼改~是否可以張貼一下修改的程式?謝謝
張貼留言