2015-12-15 2 views
1

Я только начинаю на Android и Java в целом, и я пытаюсь написать приложение, которое позволяет вам выбирать ваши некоторые контакты, захватывать их имя и основной номер и вставлять их в отдельные массивы списков. Я не уверен, как это сделать, поэтому я только добавил его вручную, где вы должны ввести имя и номер каждого человека.Как получить доступ к контактам android в массив

List<String> phnnumbers = new ArrayList<String>(); 
List<String> names = new ArrayList<String>(); 
TextView quantityTextView = (TextView) findViewById(R.id.numbersview); 
// Defines the box where we will grab the numbers 
EditText addnumberfieldbox = (EditText) findViewById(R.id.addnumberfield); 
EditText nameboxtext = (EditText) findViewById(R.id.namebox); 
// Grabs the box's contents and puts it into useable data 
Editable numberfieldEditable = addnumberfieldbox.getText(); 
Editable nameboxEditable = nameboxtext.getText(); 
// Finally uses the data from the box, and puts it in 
String numberfieldString = numberfieldEditable.toString(); 
String nameboxString = nameboxEditable.toString(); 
names.add(nameboxString); 
phnnumbers.add(numberfieldString); 

Это метод, который я использую, чтобы получить текст и поместить его в массивы.

+0

Следуйте этому руководству => https://github.com/ChiragSavsani/ContactManager –

ответ

1

Чтобы получить доступ к списку контактов телефона необходимо выполнить следующие действия:

Шаг 1: Добавить разрешение на доступ к контактам в вашем файле manifest.xml

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

Шаг 2 : Используйте следующий код для извлечения имени и номера телефона, а затем сохраните их в ArrayList.

ArrayList<JSONObject> contacts = new ArrayList<>(); 

public void addContacts(){ 

    //to store name-number pair 
    JSONObject obj = new JSONObject(); 

    try { 
     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 phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      obj.put(name, phoneNumber); 
      contacts.add(obj); 

      Log.e("Contact list with name & numbers", " "+contacts); 
     } 
     phones.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 

Вы можете использовать ArrayList контакты в коде приложения.

+0

Хорошо, что объяснил мне, как на самом деле захватить контакты, но мне интересно, как я разрешу пользователю выбирать некоторые из контактов из своего списка контактов и использовать только те контакты, которые они выбрали, добавить те в мои массивы (имена и имена соответственно). Должен ли я захватить все контакты в другой массив, сделать всплывающее окно какого-то рода, позволить пользователю выбрать некоторые, а затем перенести их в массив phnnumbers и names? или есть встроенный способ использования приложения для контактов? –

+0

Ну, нет официального способа выбора контактов из телефонной книги. Итак, вы должны придерживаться подхода, который вы уже упоминали в приведенном выше комментарии. Для руководства вы можете следовать этому [ответ] (http://stackoverflow.com/a/12425005/4116262) –

0

1 - Установите разрешения на вашем AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission> 
<application 
     android:theme="@style/AppTheme" > ... 

2 - импорт ContactsContract

import android.provider.ContactsContract; 

3 - Заполняем курсор с телефонными контактами:

ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
    null, null, null, null); 

4 - Заполнять ArrayLists

List<String> phnnumbers = new ArrayList<String>(); 
    List<String> names = new ArrayList<String>(); 

    if (cur.getCount() > 0) { 
    while (cur.moveToNext()) { 
    String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
    String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
      names.add(name); 
      phnnumbers.add(phoneNumber); 

     } 
    } 
+0

спасибо, я узнал, что такое курсоры и насколько они полезны. Однако, как бы я только захватил контакты, выбранные пользователем? см. мой комментарий выше для получения дополнительной информации –

Смежные вопросы