2

我正在構建一個用戶界面,我需要在列表視圖中顯示手機通訊錄的列表。如何僅顯示手機通訊錄(不包括SIM通訊錄)

我使用ContactsContract.DataCursorLoader加載數據,然後將光標綁定到自定義適配器(從SimpleCursorAdapter擴展而來)。

這裏的問題是,我無法弄清楚如何過濾掉SIM卡的聯繫人;我有一個測試手機在手機和SIM卡上都有相同的聯繫人,這會導致listview有重複的條目。如果我刪除了SIM卡,重複項就會消失。

如何將此過濾器取出SIM聯繫人?我正在尋找一種方法來使用1個查詢來獲取數據。

這是我此刻的加載我的數據:

Uri queryUri = ContactsContract.Data.CONTENT_URI; 

String[] projection = new String[] { ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Data.MIMETYPE, 
     ContactsContract.RawContacts.ACCOUNT_TYPE }; 

selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = 1 AND IS_PRIMARY = 1 AND MIMETYPE = '" + Phone.CONTENT_ITEM_TYPE + "'"; 


cursorLoader = new CursorLoader(getActivity(), queryUri, projection, selection, null, ContactsContract.Contacts.DISPLAY_NAME); 

cursor = cursorLoader.loadInBackground(); 

//setup adapter, bind to listview etc.. 
+0

沒人?這很複雜嗎? –

回答

1

想通了:

基本上你需要的是:

Uri queryUri = ContactsContract.Contacts.CONTENT_URI; 

這將服從用戶的地址簿設置 - 如果用戶禁用顯示SIM卡聯繫人,則查詢結果會自動排除SIM卡聯繫人。

希望這可以幫助別人。