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