Android 獲取系統聯絡人並排序

2021-07-09 13:41:26 字數 2160 閱讀 1291

今天我要說的是獲取android手機裡面聯絡人並按自己進行排序

的方法。

在說這個之前,我只能說之前的自己真的很傻,為什麼這麼說呢,請大家看看之前的我是怎麼做的?

之前的我:首先是通過獲取系統的聯絡人,將名字轉換成漢語拼音(在這個過程還用到了漢語拼音轉換包),然後獲取首字母進行排序,結果就是功能是實現了,但是相當複雜

。後來的我:直接在獲取聯絡人的時候,也獲取到了名字的拼音的拼寫,然後自動排序。

那麼下面我就開始上**:

首先宣告幾點:

1、contactmember

是我自己的例項類,裡面有:

public string contact_name;

public string contact_phone;

public int contact_id;

public string sortkey;

2、其次我們看到的uri是個很關鍵的東西,android中提供contentprovider實現資料共享,那麼怎樣獲取這些資料呢,就是通過uri得到要訪問的資料。

3、cursor:這個稱之為游標的東西,很管用的。通過它,我們可以獲取資料庫中的東西。但是有一點,大家千萬要記住,用完之後一定要記得關閉。

不然會造成記憶體洩露等問題,後果很嚴重哦。

4、如果大家感興趣的話,可以去contactscontract

.commondatakinds

.phone裡的原始碼裡看看,裡面有很多解釋,那麼現在呢,我帶大家示範性的看下。

下面這段**就是對「sort_key」的解釋,是不是很詳細呢,如果大家還想要獲取聯絡人其他的資訊,那麼都可以在這裡面找到。

/**

* sort key that takes into account locale-based traditions for sorting

* names in address books. the default

* sort key is . for chinese names

* the sort key is the name's pinyin spelling, and for japanese names

* it is the hiragana version of the phonetic name.

*/public static final string sort_key_primary = "sort_key";

5、以下就是獲取聯絡人的具體**

,寫完之後,終於把以前繁雜的**去掉了,有種神清氣爽的感覺。以後大家要是有這個需求的話,直接就可以copy了,o(∩_∩)o哈哈~

cursor c;

public arraylistgetcontact(activity context) , null, null, "sort_key");

if (cursor.movetofirst()) while (cursor.movetonext());

c = cursor;

}} catch (exception e) finally

return listmembers;

}

/**

* 獲取sort key的首個字元,如果是英文本母就直接返回,否則返回#。

* * @param sortkeystring

* 資料庫中讀取出的sort key

* @return 英文本母或者#

*/private static string getsortkey(string sortkeystring)

return "#";

}

我為什麼要拿這個出來比較呢?其實是想說

1、沒有哪個人從一開始就知道怎樣的技術就是最好的。

2、對android裡面的那些資料庫的引數不熟悉,說白了,就是不熟悉android機制。

3、即使之前有方法解決了這個問題,但是如果碰到更好的方式就不應該固步自封,而在於勇於嘗試。

4、在不停的完善自己的同時,也漸漸暴露了自己的很多缺陷,然後才更清楚以後的自己應該怎麼樣去做

。5、多去技術型的部落格溜達溜達,看看有什麼新的技術介紹,如果有的話,可以自己開始做。

6、養成多看系統原始碼的習慣,很多我們不明白的問題在那裡會有解答。

**:

Android 獲取系統聯絡人並排序

主要通過contactscontract.commondatakinds.phone.content uri快速讀取全部資料,直接讀取資料庫中的資料並按拼音排序 不過按拼音排序只支援api11以上的 讀取名字使用了contact表中的顯示 沒怎麼寫過文章 就直接上 了 這是用到的bean publi...

Android操作聯絡人

android系統中的聯絡人也是通過contentprovider來對外提供資料的,我們這裡實現獲取所有聯絡人 通過 號碼獲取聯絡人 新增聯絡人 使用事務新增聯絡人。獲取所有聯絡人 1.android系統中的聯絡人也是通過contentprovider來對外提供資料的 2.資料庫路徑為 data d...

Android操作聯絡人

一 聯絡人資料庫 聯絡人的資料庫檔案的位置 data data com.android.providers.contacts databases.contacts2.db 資料庫中重要的幾張表 1 contacts表 該錶儲存了所有的手機測聯絡人,每個聯絡人佔一行,該錶儲存了聯絡人的 contact...