检索联系人列表android

问题描述:

我想使用Fragment显示联系人列表。当用户从列表中选择姓名时,该号码将显示在烤面包上。该列表将仅显示姓名。如何获得数字表单联系人。我通过Android开发人员培训去了检索联系人列表,但该教程是不完整的,甚至下载示例代码并没有帮助,因为样本代码是更先进的联系人列表操作(搜索等)检索联系人列表android

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Context context = getActivity(); 
    int layout = android.R.layout.simple_list_item_1; 
    Cursor c = null; // there is no cursor yet 
    int flags = 0; // no auto-requery! Loader requeries.  

    mAdapter = new SimpleCursorAdapter(context, layout, c, FROM, TO, flags); 
} 


@Override 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 

    final ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     {    
      Toast.makeText(getActivity(), " Clicked!" 
        , Toast.LENGTH_SHORT).show(); 
     }   
    }); 
    // each time we are started use our listadapter 
    setListAdapter(mAdapter); 
    // and tell loader manager to start loading 
    getLoaderManager().initLoader(0, null, this); 
} 
@SuppressLint("InlinedApi") 
private static final String SELECTION = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? Contacts.DISPLAY_NAME_PRIMARY + " LIKE ?" : Contacts.DISPLAY_NAME + " LIKE ?"; 

private String mSearchString; 
private String[] mSelectionArgs = { mSearchString }; 

private static final String[] PROJECTION = 
{ 
     Contacts._ID, 
     Contacts.LOOKUP_KEY, 
     Build.VERSION.SDK_INT 
       >= Build.VERSION_CODES.HONEYCOMB ? 
       Contacts.DISPLAY_NAME_PRIMARY : 
       Contacts.DISPLAY_NAME 
    }; 

private static final String[] FROM = { Contacts.DISPLAY_NAME_PRIMARY }; 
private static final int[] TO = { android.R.id.text1 }; 
@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) 
{ 

    Uri contentUri = Contacts.CONTENT_URI; 

    return new CursorLoader(getActivity(), Contacts.CONTENT_URI, PROJECTION, null, null, Contacts.DISPLAY_NAME+" ASC"); 
} 
@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) 
{ 

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

    mAdapter.swapCursor(null); 
} 

我怎样才能获得数字形式的接触

我与编辑PROJECTION阵列并添加HAS_PHONE_NUMBER列,如果有相关联的电话号码无法进行启动。

如果有就是,然后使用您的联系人的ID,您可以(根据您的需要注意的类型约束,所以编辑)做这样的事情:

Cursor cursorPhone = getContentResolver() 
        .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         new String[]{ ContactsContract.CommonDataKinds.Phone.NUMBER }, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND " + 
         ContactsContract.CommonDataKinds.Phone.TYPE + " = " + 
         ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, 
        new String[]{ contactId }, 
        null); 

if (cursorPhone.moveToFirst()) { 
    contactNumber = cursorPhone.getString(cursorPhone 
      .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
} 

cursorPhone.close();