1

Я хочу отобразить список контактов с помощью фрагмента. Номер будет отображаться на тосте, когда пользователь выбирает имена из списка. В списке будет отображаться только имя. Как я могу получить контакт формы с цифрами. Я прошел обучение разработчиков 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); 
} 

ответ

0

Как я могу получить номера контактной формы,

Я хотел бы начать с редактированием PROJECTION массива и добавлением HAS_PHONE_NUMBER столбца не действовать, если нет номера телефона, связанного.

Если есть есть, то, используя идентификатор вашего контакта вы можете сделать что-то вроде этого (обратите внимание на тип Ограничить, поэтому редактировать в соответствии с вашими потребностями):

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(); 
Смежные вопросы