2010-05-25 114 views
3

注:必須在Android 1.5上工作 - ContactsContract不會獲取所有手機聯繫人列表?

足夠簡單的問題。我需要知道獲得用戶按下聯繫人按鈕時顯示的相同聯繫人列表的最佳方式。

你可能會認爲像這樣的工作:

//For Contacts 
Intent pickIntent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 
this.startActivityForResult(pickIntent, RESULT); 

//For Phones 
Intent pickIntent = new Intent(Intent.ACTION_PICK, Phones.CONTENT_URI); 
this.startActivityForResult(pickIntent, RESULT); 

的問題是,不包括二次谷歌賬戶或交換聯繫人。通過二級帳戶,在Android中,您可以添加其他Gmail帳戶以同步郵件/聯繫人。上述意圖不會列出這些額外的聯繫人。

我還被告知,在HTC Desire上,您可以將手機中未添加聯繫人的聯繫人添加到Google。這些聯繫人也不顯示。

那麼,如何獲得真正的聯繫人列表,以便我可以創建自己的列表活動,在Google意圖沒有的情況下正常工作。

注:必須在Android 1.5的工作 - ContactsContract不

回答

3

有關訪問Android上聯繫人的詳細說明,請參閱here。它還可以幫助你創建一個應用程序,如果可能的話,使用ContactsContract,但仍然適用於較舊的Android版本。

+0

太棒了!我已經使用ContactsContract自己進行了反射測試,看看它是否可行。 我會執行,測試慾望,並馬上回來。 – pcm2a 2010-05-25 13:03:10

+0

我編寫了他們的例子,但我看不出它對我們有什麼幫助。您需要定位2.0.1或更高版本的API才能編譯它們的示例。因此,我假設您的應用程序無法安裝在運行低於該版本的手機上,並且早期版本的用戶將無法在市場中看到您的應用程序。 我們需要一個可以在所有版本上運行並且可以部署的解決方案。我所看到的例子都沒有這樣做,除非我真的很厚並且錯過了一些東西,這很可能。 我已經得出結論,我必須發佈我的應用程序的兩個版本。不好。 – 2010-06-21 11:27:46

+0

您可以編譯爲更高版本,但仍支持早期的SDK。如果使用反射,則可以動態加載導入後面的API的類 - 在加載之前,類不會「鏈接」。有關版本控制的更多信息,請參見此處:http://developer.android.com/guide/publishing/versioning.html#minsdkversion – sehugg 2010-07-15 04:56:03

3

您需要使用ContactsContract提供從數據庫中讀取數據。

有關如何使用ContactsContract的詳細信息,請參閱此link

HTH!

+0

超過30%的Android用戶仍然使用Android 1.5,並且無法使用ContactsContract類。是否有任何很好的例子可以讀出適用於所有版本的聯繫人?我必須繼續支持這些用戶。 – pcm2a 2010-05-25 12:17:40

0

做參考下面的問題,How to read contacts on Android 2.0

人民類是從Android 2.0的,你必須使用ContactsContract類,而不是貶值。

+0

超過30%的Android用戶仍在Android 1.5上,無法使用ContactsContract類。是否有任何很好的例子可以讀出適用於所有版本的聯繫人?我必須繼續支持這些用戶。 – pcm2a 2010-05-25 12:19:04

+0

我不認爲有這樣的課,你必須單獨支持他們。 – Vamsi 2010-05-26 06:51:04

-1
Cursor cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    while (cursor.moveToNext()) { 
     String name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

    } 
+2

請爲每個人提供一些解釋。 – 2013-12-30 11:28:11

相關問題