Android联系信息,包括facebook等联系人

时间:2011-05-24 05:21:19

标签: android facebook contacts

我正在使用以下代码。在我的应用程序中,用户可以从联系人中选择查看联系人信息(应用程序跳转到相应的联系信息)。 这是代码的结果: 用户点击其数据在手机中的人:app跳转到联系人信息 用户点击其数据是从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);
        }

Here我发现允许访问facebook联系人。该人还说“我通过FB Graph api(http://graph.facebook.com/me/friends)获取所有联系人姓名/ id映射的缓存,并将其用于id查找。”这是什么意思?

如果我无法解决此问题,我的程序看起来很蹩脚。应用程序中会显示500个联系人,但仅当联系信息大约为40时,应用程序才会跳转。在过去的460起案件中,它无法正常工作。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。事实证明,查询只包括那些有电话号码的人,但我的名单中包含了所有人。这就是为什么跑步导致了力量接近和错误的结果。我不得不用HAS_PHONE_NUMBER删除这两行,一切正常。