Контактная информация Android, включая контакты facebook и т. д.

Я использую следующий код. В моем приложении пользователь может выбирать контакты для просмотра контактной информации (приложение переходит к соответствующей контактной информации). Это результат кода: Пользователь нажимает на кого-то, чьи данные были в телефоне: приложение переходит к контактной информации Пользователь нажимает на кого-то, чьи данные были импортированы из facebook: если это первый запуск приложения, оно принудительно закрывается. Если пользователь ранее нажимал на кого-то, чьи данные были в телефоне (добавлены вручную), отображается его/ее контактная информация.

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cur.getCount() > 0) 
{
  while (cur.moveToNext()) {
  id_contact = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                                    name_contact =     
  cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
  if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
  {
    if (name_contact.equals(myArr2_cs[item]))
    {
      Toast.makeText(getApplicationContext(), "NAME2: " + name_contact,   Toast.LENGTH_SHORT).show();
      Toast.makeText(getApplicationContext(), "ID2: " + id_contact, Toast.LENGTH_SHORT).show();
      if (Integer.parseInt(cur.getString(
       cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
       {
         Cursor pCur = cr.query(
         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id_contact}, null);
         id_contact2 = id_contact;
        }
     }
   }
 }
Toast.makeText(getApplicationContext(), "id_contact: " + id_contact2, Toast.LENGTH_SHORT).show();
    Intent intent_contacts = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people/" + id_contact2));
      startActivity(intent_contacts);
        }

Здесь я обнаружил, что доступ к контактам facebook разрешен. Парень также говорит, что «я получаю кеш всех сопоставлений имен / идентификаторов контактов через API FB Graph (http://graph.facebook.com/me/friends) и используйте его для поиска идентификатора». Что это обозначает?

Если я не могу решить эту проблему, моя программа выглядит хромой. В приложении отображается 500 контактов, но приложение переходит к контактной информации только в случае, если их около 40. В последних 460 случаях это не работает.


person erdomester    schedule 24.05.2011    source источник
comment
Вопрос не очень ясен. Вы показываете список контактов из контактов телефона Androd или из контактов facebook?   -  person Arcantos    schedule 25.05.2011


Ответы (1)


Мне удалось решить эту проблему. Оказалось, что в запрос вошли только те, у кого есть номер телефона, а в мой список попали все. Вот почему запуск привел к принудительному закрытию и ложным результатам. Мне пришлось удалить эти две строки с HAS_PHONE_NUMBER, и все работает нормально.

person erdomester    schedule 26.05.2011