2009-05-15 3 views
122

Я делаю приложение для Android, и вам нужно позвонить в список контактов телефона. Мне нужно вызвать функцию списка контактов, выбрать контакт, а затем вернуться в мое приложение с именем контакта. Вот код, который я получил в Интернете, но он не работает.Как позвонить в список контактов Android?

import android.app.ListActivity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.Contacts.People; 
import android.view.View; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 

public class Contacts extends ListActivity { 

    private ListAdapter mAdapter; 
    public TextView pbContact; 
    public static String PBCONTACT; 
    public static final int ACTIVITY_EDIT=1; 
    private static final int ACTIVITY_CREATE=0; 

    // Called when the activity is first created. 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     Cursor C = getContentResolver().query(People.CONTENT_URI, null, null, null, null); 
     startManagingCursor(C); 

     String[] columns = new String[] {People.NAME}; 
     int[] names = new int[] {R.id.row_entry}; 

     mAdapter = new SimpleCursorAdapter(this, R.layout.mycontacts, C, columns, names); 
     setListAdapter(mAdapter); 
    } // end onCreate() 
    // Called when contact is pressed 
    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 

     Cursor C = (Cursor) mAdapter.getItem(position); 
     PBCONTACT = C.getString(C.getColumnIndex(People.NAME)); 

     // RHS 05/06 
     //pbContact = (TextView) findViewById(R.id.myContact); 
     //pbContact.setText(new StringBuilder().append("b")); 

     Intent i = new Intent(this, NoteEdit.class); 
     startActivityForResult(i, ACTIVITY_CREATE); 
    } 
} 
+0

Не могли бы вы исправить раздел кода, чтобы включить первую часть кода: import android.app.ListActivity ... –

+0

1.6 & 2.2 Экзамены по этому вопросу: http://www.coderanch.com/t/512048/ Android/Mobile/Contact-API – Blundell

+0

попробуйте [устройство для удаления контактов android] (https://github.com/nitiwari-dev/android-contact-extractor). Небольшая простая простая в использовании библиотека – nitesh

ответ

241

Я не 100% уверен, что ваш пример код должен делать, но следующий фрагмент кода поможет вам «вызвать функцию списка контактов, выберите контакт, а затем вернуться к [вашему] приложению с имя контакта ".

Для этого процесса есть три шага.

1. Права доступа

Добавить разрешение на чтение данных контактов в манифесте приложения.

<uses-permission android:name="android.permission.READ_CONTACTS"/> 

2. Вызов Контактную Picker

В вашей деятельности, создать Intent, который просит систему, чтобы найти активность, которая может выполнять действия PICK из элементов в Контактах URI.

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

Вызов startActivityForResult, проходя в этом Намерении (и запроса кода целого числа, PICK_CONTACT в данном примере). Это приведет к тому, что Android запустит активность, зарегистрированную для поддержки ACTION_PICK, на People.CONTENT_URI, а затем вернется к этой операции, когда выбор сделан (или отменен).

startActivityForResult(intent, PICK_CONTACT); 

3. Прослушивание Результата

Также в вашей деятельности, переопределить метод onActivityResult слушать возвращения из «выберите контакт» активность была запущена на шаге 2. Вы должны проверить, что возвращаемый код запроса соответствует ожидаемому значению и что код результата равен RESULT_OK.

Вы можете получить URI выбранного контакта, позвонив по адресу getData() по данным Параметр Intent. Чтобы получить имя выбранного контакта, вам нужно использовать этот URI для создания нового запроса и извлечения имени из возвращаемого курсора.

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 
    case (PICK_CONTACT) : 
     if (resultCode == Activity.RESULT_OK) { 
     Uri contactData = data.getData(); 
     Cursor c = getContentResolver().query(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 
      String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      // TODO Whatever you want to do with the selected contact name. 
     } 
     } 
     break; 
    } 
} 

исходный код Full: tutorials-android.blogspot.com (how to call android contacts list).

+40

кажется, что многие из этого кода устарели от последних API-интерфейсов Android. У кого-то есть обновленная версия? – yamspog

+0

В: Если я хочу начать субактивность при выборе контакта (так что у нас есть способ вернуться к списку контактов снова), будет ли работать Intent.ACTION_PICK? Я начинаю думать, что мне нужно катить свой собственный курсор и использовать setListAdapter, как в главном вопросе. Hmm ... –

+0

+1 экспертное описание я искал :) Thanx –

14

Оглядевшись для решения уровня API 5, используя ContactsContract API вы можете немного изменить код выше со следующим:

Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
    startActivityForResult(intent, PICK_CONTACT); 

, а затем в onActivityResult использовать имя столбца:

ContactsContract.Contacts.DISPLAY_NAME 
+1

Что такое отображение телефонных номеров? –

+0

В Android 1.6 таких классов нет. Я нашел похожие имена в Contacts.ContactMethods, но у меня есть только исключения (не могу найти такую ​​активность). Но код Reto отлично работает – davs

67

Я делаю это так для версии Android 2.2 Froyo: в основном используют eclipse для создания такого класса: public class SomePickContactName extends Activity

затем введите этот код.Не забудьте добавить переменные частный класс и константы ссылки в моей версии коды:

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState);  
    Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    startActivityForResult(intentContact, PICK_CONTACT); 
}//onCreate 

public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 

    if (requestCode == PICK_CONTACT) 
    {   
    getContactInfo(intent);   
    // Your class variables now have the data, so do something with it. 
    } 
}//onActivityResult 

protected void getContactInfo(Intent intent) 
{ 

    Cursor cursor = managedQuery(intent.getData(), null, null, null, null);  
    while (cursor.moveToNext()) 
    {   
     String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
     name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

     String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

     if (hasPhone.equalsIgnoreCase("1")) 
      hasPhone = "true"; 
     else 
      hasPhone = "false" ; 

     if (Boolean.parseBoolean(hasPhone)) 
     { 
     Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
     while (phones.moveToNext()) 
     { 
      phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
     } 
     phones.close(); 
     } 

     // Find Email Addresses 
     Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null); 
     while (emails.moveToNext()) 
     { 
     emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
     } 
     emails.close(); 

    Cursor address = getContentResolver().query(
       ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI, 
       null, 
       ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = " + contactId, 
       null, null); 
    while (address.moveToNext()) 
    { 
     // These are all private class variables, don't forget to create them. 
     poBox  = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); 
     street  = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
     city  = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
     state  = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
     postalCode = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
     country = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); 
     type  = address.getString(address.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); 
    } //address.moveToNext() 
    } //while (cursor.moveToNext())   
    cursor.close(); 
}//getContactInfo 
+0

managedQuery устарел –

+0

сбой приложений, когда он пытался получить электронную почту во второй раз. Редактировать: если кто-то другой получает ту же ошибку, просто удалите «cursor.close();» http://stackoverflow.com/questions/9696868/unable-to-resume-activity-error – alicanbatur

5

Полный код приведен ниже

package com.testingContect; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.database.Cursor; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.provider.ContactsContract; 
    import android.provider.Contacts.People; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Toast; 

    public class testingContect extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 

    EditText ed; 
    Button bt; 
    int PICK_CONTACT; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     bt=(Button)findViewById(R.id.button1); 
     ed =(EditText)findViewById(R.id.editText1); 
     ed.setOnClickListener(this); 
     bt.setOnClickListener(this); 


    } 

    @Override 
    public void onClick(View v) { 

     switch(v.getId()) 
     { 
     case R.id.button1: 

      break; 
     case R.id.editText1: 
      Intent intent = new Intent(Intent.ACTION_PICK); 
       intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
       startActivityForResult(intent, PICK_CONTACT); 


      break; 

     } 

    } 
    public void onActivityResult(int requestCode, int resultCode, Intent intent) 
    { 

     if (requestCode == PICK_CONTACT) 
     {   
      Cursor cursor = managedQuery(intent.getData(), null, null, null, null); 
      cursor.moveToNext(); 
      String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 

      Toast.makeText(this, "Contect LIST = "+name, Toast.LENGTH_LONG).show(); 
     } 
    }//onActivityResult 
}//class ends 
+1

Где инициализируется PICK_CONTACT? –

+0

Он должен быть объявлен в верхней части класса активности: 'private static final int PICK_CONTACT = 1;'. – Omar

5
public void onActivityResult(int requestCode, int resultCode, Intent intent) 
{ 
    if (requestCode == PICK_CONTACT && intent != null) //here check whether intent is null R not 
    { 
    } 
} 

, потому что без выбора контакта он даст исключение , поэтому лучше проверить это условие.

8

Вот фрагмент кода для ПОЛУЧИТЬ контакта:

package com.contact; 

import android.app.Activity; 
import android.content.ContentResolver; 
import android.content.Intent; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 

public class GetContactDemoActivity extends Activity implements OnClickListener { 

private Button btn = null; 
private TextView txt = null; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    btn = (Button) findViewById(R.id.button1); 
    txt = (TextView) findViewById(R.id.textView1); 

    btn.setOnClickListener(this); 
} 

@Override 
public void onClick(View arg0) { 
    if (arg0 == btn) { 
     try { 
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      startActivityForResult(intent, 1); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.e("Error in intent : ", e.toString()); 
     } 
    } 
} 

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    try { 
     if (resultCode == Activity.RESULT_OK) { 
      Uri contactData = data.getData(); 
      Cursor cur = managedQuery(contactData, null, null, null, null); 
      ContentResolver contect_resolver = getContentResolver(); 

      if (cur.moveToFirst()) { 
       String id = cur.getString(cur.getColumnIndexOrThrow(ContactsContract.Contacts._ID)); 
       String name = ""; 
       String no = ""; 

       Cursor phoneCur = contect_resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); 

       if (phoneCur.moveToFirst()) { 
        name = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); 
        no = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       } 

       Log.e("Phone no & name :***: ", name + " : " + no); 
       txt.append(name + " : " + no + "\n"); 

       id = null; 
       name = null; 
       no = null; 
       phoneCur = null; 
      } 
      contect_resolver = null; 
      cur = null; 
      //      populateContacts(); 
     } 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
     Log.e("IllegalArgumentException :: ", e.toString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.e("Error :: ", e.toString()); 
    } 
} 

}

3

К моему удивлению, вам не нужны пользователям, разрешения CONTACT_READ читать имена и основную информацию (Есть контакт помеченный, каково было последнее время вызова). Однако вам нужно разрешение для чтения деталей контакта, например, номера телефона.

6
 Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
     while (phones.moveToNext()) 
     { 
     String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME) 
     String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 

     } 
3

Будьте осторожны при работе с сайтом контактов android.

Чтение списка контактов в вышеуказанных методах работает на большинстве устройств Android, кроме HTC One и Sony Xperia. Впустую мои шесть недель пытаются выяснить, что не так!

Большинство учебных пособий, доступных в Интернете, почти аналогичны - сначала прочитайте «ВСЕ» контакты, затем покажите в Listview с ArrayAdapter. Это не эффективное решение для памяти. Вместо того, чтобы сначала искать решения на других веб-сайтах, посмотрите на developer.android.com. Если какое-либо решение недоступно на сайте developer.android.com, вы должны посмотреть где-то в другом месте.

Решение предназначено для использования CursorAdapter вместо ArrayAdapter для извлечения списка контактов. Использование ArrayAdapter будет работать на большинстве устройств, но оно неэффективно. CursorAdapter извлекает только часть списка контактов во время выполнения, пока прокручивается ListView.

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ... 
    // Gets the ListView from the View list of the parent activity 
    mContactsList = 
     (ListView) getActivity().findViewById(R.layout.contact_list_view); 
    // Gets a CursorAdapter 
    mCursorAdapter = new SimpleCursorAdapter(
      getActivity(), 
      R.layout.contact_list_item, 
      null, 
      FROM_COLUMNS, TO_IDS, 
      0); 
    // Sets the adapter for the ListView 
    mContactsList.setAdapter(mCursorAdapter); 
} 

Получение списка контактов: https://developer.android.com/training/contacts-provider/retrieve-names.html

0
-> Add a permission to read contacts data to your application manifest. 

<uses-permission android:name="android.permission.READ_CONTACTS"/> 

-> Use Intent.Action_Pick in your Activity like below 

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, 
       ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
     startActivityForResult(contactPickerIntent, RESULT_PICK_CONTACT); 

-> Then Override the onActivityResult() 

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // check whether the result is ok 
     if (resultCode == RESULT_OK) { 
      // Check for the request code, we might be usign multiple startActivityForReslut 
      switch (requestCode) { 
      case RESULT_PICK_CONTACT: 
       Cursor cursor = null; 
     try { 
      String phoneNo = null ; 
      String name = null;   
      Uri uri = data.getData();    
      cursor = getContentResolver().query(uri, null, null, null, null); 
      cursor.moveToFirst();   
      int phoneIndex =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
      phoneNo = cursor.getString(phoneIndex); 

      textView2.setText(phoneNo); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
       break; 
      } 
     } else { 
      Log.e("MainActivity", "Failed to pick contact"); 
     } 
    } 

This will work check it out 
1

привет у меня есть код, чтобы сохранить контакт в базе данных по общему предпочтению вот мой код

public class Main22Activity extends AppCompatActivity { 
    EditText nameInput,phoneInput; 
    TextView LargeText; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main22); 
     nameInput = (EditText) findViewById(R.id.nameInput); 
     phoneInput = (EditText) findViewById(R.id.phoneInput); 

     LargeText = (TextView) findViewById(R.id.textView2); 
    } 

    public void saveInfo (View view){ 
     SharedPreferences sharedPref = getSharedPreferences("nameInfo" , Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor= sharedPref.edit(); 
     editor.putString("name", nameInput.getText().toString()); 
     editor.putString("phone", phoneInput.getText().toString()); 
     editor.apply(); 
     Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show(); 
    } 

    public void displayData(View view){ 
     SharedPreferences sharedPref = getSharedPreferences("nameInfo" , Context.MODE_PRIVATE); 
     String name = sharedPref.getString("name", ""); 
     String ph = sharedPref.getString ("phone",""); 
     LargeText.setText(name + " " + ph); 
    } 
} 
0

Я использую code предоставлен @Colin MacKenzie - III. Большое спасибо!

Для тех, кто ищет замену 'устаревших' managedQuery:

первой, при условии использования поддержки v4 Lib:

import android.support.v4.app.LoaderManager; 
import android.support.v4.content.CursorLoader; 
import android.support.v4.content.Loader; 

второй:

your_(activity)_class implements LoaderManager.LoaderCallbacks<Cursor> 

третий,

// temporarily store the 'data.getData()' from onActivityResult 
private Uri tmp_url; 

4th, отменяют обратные вызовы:

@Override 
public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
    // create the loader here! 
    CursorLoader cursorLoader = new CursorLoader(this, tmp_url, null, null, null, null); 
    return cursorLoader; 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 
    getContactInfo(cursor); // here it is! 
} 

@Override 
public void onLoaderReset(Loader<Cursor> loader) { 
} 

пятых:

public void initLoader(Uri data){ 
    // will be used in onCreateLoader callback 
    this.tmp_url = data; 
    // 'this' is an Activity instance, implementing those callbacks 
    this.getSupportLoaderManager().initLoader(0, null, this); 
} 

шестые, то code above, за исключением того, что я изменить параметры подписи от Намерения Cursor:

protected void getContactInfo(Cursor cursor) 
{ 

    // Cursor cursor = managedQuery(intent.getData(), null, null, null, null);  
    while (cursor.moveToNext()) 
    { 
     // same above ... 
    } 

седьмого, звоните initLoader :

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (PICK_CONTACT == requestCode) { 
     this.initLoader(data.getData(), this); 
    } 
} 

восьмых, не забудьте этот кусок кода

Intent intentContact = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    this.act.startActivityForResult(intentContact, PICK_CONTACT); 

Ссылки:

Android Fundamentals: Properly Loading Data

Initializing a Loader in an Activity

1

Я использую этот метод для чтения Контакты

public static List<ContactItem> readPhoneContacts(Context context) { 
     List<ContactItem> contactItems = new ArrayList<ContactItem>(); 
     try { 
      Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, 
        null, null, "upper("+ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + ") ASC"); 

      /*context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
        null, 
        ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?", 
        new String[] { id }, 
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+" ASC");*/ 

      Integer contactsCount = cursor.getCount(); // get how many contacts you have in your contacts list 
      if (contactsCount > 0) { 
       while (cursor.moveToNext()) { 

        String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
        String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
        if (Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
         ContactItem contactItem = new ContactItem(); 
         contactItem.setContactName(contactName); 
         //the below cursor will give you details for multiple contacts 
         Cursor pCursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
           new String[]{id}, null); 
         // continue till this cursor reaches to all phone numbers which are associated with a contact in the contact list 
         while (pCursor.moveToNext()) { 
          int phoneType = pCursor.getInt(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
          //String isStarred  = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.STARRED)); 
          String phoneNo = pCursor.getString(pCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          //you will get all phone numbers according to it's type as below switch case. 
          //Logs.e will print the phone number along with the name in DDMS. you can use these details where ever you want. 
          switch (phoneType) { 
           case Phone.TYPE_MOBILE: 
            contactItem.setContactNumberMobile(phoneNo); 
            Log.e(contactName + ": TYPE_MOBILE", " " + phoneNo); 
            break; 
           case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
            contactItem.setContactNumberMobile(phoneNo); 
            Log.e(contactName + ": TYPE_HOME", " " + phoneNo); 
            break; 
           case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
            contactItem.setContactNumberMobile(phoneNo); 
            Log.e(contactName + ": TYPE_WORK", " " + phoneNo); 
            break; 
           case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE: 
            contactItem.setContactNumberMobile(phoneNo); 
            Log.e(contactName + ": TYPE_WORK_MOBILE", " " + phoneNo); 
            break; 
           case Phone.TYPE_OTHER: 
            contactItem.setContactNumberMobile(phoneNo); 
            Log.e(contactName + ": TYPE_OTHER", " " + phoneNo); 
            break; 
           default: 
            break; 
          } 
         } 
         contactItem.setSelectedAddress(getContactPostalAddress(pCursor)); 
         pCursor.close(); 
         contactItems.add(contactItem); 
        } 

       } 
       cursor.close(); 
      } 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 


     return contactItems; 
    }//loadContacts 
Смежные вопросы