«

»

Nov 08

Как получить список контактов с номерами телефонов на android в java

Не забудьте добавить в файл-манифест соответствующие права для доступа к спискам контактов:

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

Снипет java кода для получения списка контактов из телефонной книжки с номерами телефонов.

Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[] {Phone._ID, Phone.DISPLAY_NAME, Phone.NUMBER}, null, null, null);
startManagingCursor(cursor);

if (cursor.getCount() > 0)
{
    while (cursor.moveToNext())
    {
        // process them as you want
        Log.i("DATA"," ID "+cursor.getString(0)+" NAME"+cursor.getString(1)+" PHONE "+cursor.getString(2));
    }
}

13 comments

Skip to comment form

  1. Nik

    Ошибка в строке: Log.i(“DATA”,” ID “+cursor.getString(0)+” NAME”+cursor.getString(1)+” PHONE “+cursor.getString(2));

    1. admin

      Не вижу. Скопируйте текст ошибки.

  2. Nik

    Вот: Syntax error on tokens, delete these tokens

    А можете ещё подсказать, как это на TextView вывести.?

    1. admin

      Касательно ошибки – это скорее всего проявляет себя злобный гений движка wordpress’а.
      Попробуйте просто перенабрать весь текст разделяя строчки обычными прямыми ковычками.

    2. admin

      как все это вывести на TextView:
      (учтите – вы так будете выводить только одну запись)

      // somewhere in your activity class definition
      private TextView Your_Desired_Text_View;
      
      // somewhere in your activity class initComponent() function
      ...
      LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      inflater.inflate(R.layout.your_own_widget_in_xml, this);
      Your_Desired_Text_View = (TextView) findViewById(R.id.employee_task_done_value);
      ....
      
      // and finaly set string to TextView
      Employee_Task_Done_Value.setText("Put desired string here");
      
    3. admin

      Если вы хотите вывести весь список контактов в виде прокручиваемого списка,
      где каждая ячейка – отдельный TextView, с информацией по отдельному контакту из телефонной книжки
      – вам необходимо использовать ListView:

      // somewhere in your activity class definition
      private ListView List_For_Store_Contact_Info;
      ArrayList<String> Contact_Info = new ArrayList<String>();
      
      // somewhere in your activity class onCreate() function
      ...
      setContentView(R.layout.main);
      List_For_Store_Contact_Info=(ListView)findViewById(R.id.list_for_store_contact_info);
      
      
      // fill your Array List with appropriate values from Contacts List:
      ...
      while (cursor.moveToNext())
      {
      Contact_Info.add(" ID "+cursor.getString(0)+" NAME"+cursor.getString(1)+" PHONE "+cursor.getString(2)));
      }
      
      List_For_Store_Contact_Info.setAdapter(new ArrayAdapter<String>(this,android.R.layout.list_for_store_contact_info , Contact_Info));
      
      
  3. Nik

    Спасибо большое.Я новичёк я не понимаю, что вместо точек нужно…((((( Можно цельный код увидеть???

  4. dikkini

    Вот правильный код.

    if (cursor.getCount() > 0)
    {
    while (cursor.moveToNext())
    {
    // process them as you want
    Log.i(“DATA”,” ID “+cursor.getString(0)+” NAME”+cursor.getString(1)+” PHONE “+cursor.getString(2));
    }
    }

    1. admin

      вот хоть убей не вижу различий с исходным сниппетом 🙂

      1. dikkini

        А Eclipse видит 🙂

        Кстати, если не сложно, покажи как правильно получить массив из всей телефонной книги.
        То есть хочу получить массив из имен всей телефонной книжки, а потом вставить его в адаптер.

        1. admin

          про массив имен из телефонной книжки писал чуть выше – http://my-it-notes.com/2011/11/how-to-get-contacts-list-android-using-java/#comment-839

  5. dimon

    Добрый день! я только в начале пути по андроид. Не могли бы подсказать а как можно подсчитать свои исход и вход вызовы на телефоне и их длительность. Или где можно узнать такую инфу. хочу написать свой счетчик трафика звонков. Спасибо за помощь

    1. admin

      Зарегистрировать свой сервис с парой колбек-функций – на начало и конец звонка, замеряющих текущее время и записывающий в базу-sqlite – всю необходимую статистику, которую потом можно вывести в том или ином виде.
      А вообще, общая статистика по длительности вызовов на телефонах как правило ведется, только вот не сущестует унифицированного способа ее получить – ищите по конкретной модели.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>