Android開發,通迅薄的注意事項

來源:互聯網
上載者:User

上周拿到小米。最近一周在嘗試開發通迅薄。一方面是系統內建的通迅薄的確有些不爽的地,一方面也是想嘗試寫一些手機應用。

中間碰到兩個問題,估計其它人也會碰到,就一併寫下。

1 效率太慢。

網上有大量的文章(如http://blog.csdn.net/yao_guet/article/details/6626001),先要去查所有連絡人(有些人根本沒有電話),接著去查電話紀錄(一個人可能有多個電的話)。如果你的聯絡很多,比如像我有600多個連絡人,那開啟通迅薄差不多要3秒以上(小米的硬體還是很強悍的)。問題的關鍵就這在兩個while上。

其實只需要直接查詢ContactsContract.CommonDataKinds.Phone.CONTENT_URI就可以拿到DisplayName和PhoneNumber。我想內部很可能只查了一個表就搞定了。

另外,我的應用程式只需要手機,所以加上以下條件

StringBuffer selection = new StringBuffer()
.append(pn + " NOT LIKE '106%'")
.append(" and substr("+pn+",0,3) != '106'")
.append(" and "+pn + " NOT LIKE '010%'")
.append(" and length("+pn + ") >= 11")
.append(" and ("+pn + " LIKE '1%' or "+pn + " LIKE '01%')");

基本上夠我用了。

針對查詢速度問題,有熟手自己寫AyncQueryHandler。我這種菜鳥沒敢嘗試。

 

2 通迅薄拼音排序

網上的例子大部份都是 

sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

本來以為Sqlite和SQL server差不多應該能換那個LOCALIZED,結果都不行。

其實一句話就能搞定

sortOrder = "sort_key_alt";

我想可能在表中有個欄位就叫sort_key_alt。

 

二個問題都很常見,網上也有很多人問,不過正確答案確不多。另外,Android的API也的確比較亂點,中文資料也很少(個人觀點)。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: