今天我要說的是獲取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...