2014-06-23 140 views
0

我試圖檢索顯式保存的Android設備上的聯繫人(即不是通過gmail或Facebook和其他保存類似聯繫人信息的應用程序返回的聯繫人)。我一直在玩弄從PhoneGap的聯繫人插件的代碼塊:只獲取保存到手機或SIM卡的android聯繫人

Cursor idCursor = mApp.getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, 
    new String[] { ContactsContract.Data.CONTACT_ID }, 
    whereOptions.getWhere(), 
    whereOptions.getWhereArgs(), 
    ContactsContract.Data.CONTACT_ID + " ASC"); 

我修改了各種爭論,並試圖基於ContactsContract.RawContacts.ACCOUNT_TYPE沒有運氣查詢。我如何修改上面的代碼塊來實現我所需要的?

回答

0

無論是否接觸出現在經常接觸,由以下屬性決定:

ContactsContract.Contacts.IN_VISIBLE_GROUP 

修改的一個查詢考慮到這和它刪除聯繫人返回的不是真正接觸(如Gmail歷史,...等):

options.setWhere("(" + ContactsContract.Contacts.IN_VISIBLE_GROUP + " = 1 AND " + ContactsContract.Data.CONTACT_ID + " LIKE ?)"); 

在原來的問題查詢(從科爾多瓦接觸插件)只是獲取匹配所提供的搜索詞的ID,修改查詢是後來的一個在插件代碼中(更準確地說co rresponding getWhere()功能進行了修改,佔IN_VISIBLE_GROUP屬性):

Cursor c = mApp.getActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI, 
      columnsToFetch.toArray(new String[] {}), 
      idOptions.getWhere(), 
      idOptions.getWhereArgs(), 
      ContactsContract.Data.CONTACT_ID + " ASC"); 

我主持插件的修改版本上my github。請注意,我的版本僅適用於沒有搜索字詞的情況。

相關問題