2013-08-05 20 views
1

我想知道:存儲在手機默認聯繫人中的所有聯繫人的ID,姓名,電話號碼和公司名稱。之後,我想將它們顯示在列表視圖中。 我使用光標加載器來做到這一點。但是,我剛剛獲得每個聯繫人的ID和名稱。我無法獲得電話號碼&公司。你可以在下面看到我所有的代碼。如何使用遊標加載器獲取聯繫人的某些信息?

我想我可能是錯的:PROJECTION & SELECTION(?) 你的意見怎麼樣?你能告訴我我的錯誤是什麼嗎?

public class MainActivity extends ListActivity implements LoaderManager.LoaderCallbacks<Cursor>{ 
final Context context = this; 
protected Intent intent; 
protected TextView contactId; 
protected ListView lv; 
protected EditText inputSearch; 
protected SimpleAdapter adapter; 
SimpleCursorAdapter curAdapter; 
public MatrixCursor extras; 

    SimpleCursorAdapter mAdapter; 

    static final String[] PROJECTION = new String[] { 
      ContactsContract.Contacts._ID, 
      ContactsContract.Contacts.DISPLAY_NAME, 
      ContactsContract.CommonDataKinds.Phone.NUMBER, 
      ContactsContract.CommonDataKinds.Organization.DATA}; 

    static final String SELECTION = "("+ 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + ContactsContract.Contacts._ID + " AND " + 
      ContactsContract.Data.CONTACT_ID + " = " + ContactsContract.Contacts._ID + " AND " + 
      ContactsContract.Data.MIMETYPE + " = " + ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE + 
      ")"; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String[] fromColumns = {ContactsContract.Contacts._ID, 
          ContactsContract.Contacts.DISPLAY_NAME, 
          ContactsContract.CommonDataKinds.Phone.NUMBER, 
          ContactsContract.CommonDataKinds.Organization.DATA}; 

    int[] toViews = {  R.id.contactId, 
          R.id.contactName, 
          R.id.phone, 
          R.id.company}; 

    mAdapter = new SimpleCursorAdapter(this, 
      R.layout.view_contact_entry, null, 
      fromColumns, toViews, 0); 

    setListAdapter(mAdapter); 
    getLoaderManager().initLoader(0, null, this); 
} 

public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    return new CursorLoader(this, ContactsContract.Contacts.CONTENT_URI, 
       PROJECTION, SELECTION, null, "DISPLAY_NAME ASC");   
} 

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    mAdapter.swapCursor(data); 
} 

public void onLoaderReset(Loader<Cursor> loader) { 
    mAdapter.swapCursor(null); 
} 

}

確定。這裏是logcat的所有信息: https://lh5.googleusercontent.com/-rXZ0iSq_CEg/Uf9bk-CmwBI/AAAAAAAAAVQ/SvieJesBqqQ/s800/Untitled.png

回答

1

試着改變每個ContactsContract.Contacts._IDContactsContract.CommonDataKinds.Phone._ID

ContactsContract.Contacts.DISPLAY_NAMEContactsContract.CommonDataKinds.Phone.DISPLAY_NAME

+0

好主意,雷南班代拉! 我嘗試做到這一點,併成功獲得身份證,姓名,電話號碼。但是,公司名稱怎麼樣(?) – R700

+0

對不起,忘了這個。這裏是: ContactsContract.CommonDataKinds.Organization.COMPANY –

+0

我已經獲得每個聯繫人的ContactsContract.CommonDataKinds.Organization.COMPANY的值。他們是電話號碼(?) Organization.COMPANY和Phone.DISPLAY_NAME的值相同(!) 有什麼問題? – R700

相關問題