Android联系人内容提供商

时间:2013-10-14 14:32:31

标签: android contacts android-contentprovider

我正在尝试创建应用程序进行通信。我从android联系人书中显示联系人列表。如何指示联系人安装了我的应用程序(如Viber)?我是否需要在db中使用联系人的副本创建自己的表,或者联系ContentProvider可以帮助我吗?

viber example

1 个答案:

答案 0 :(得分:0)

您可以使用此代码:

写下这些行以获取联系人:

     Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
     startActivityForResult(intent, PICK_CONTACT);
 }

并覆盖此方法:

@Override public void onActivityResult(int reqCode, int resultCode, Intent data){ super.onActivityResult(reqCode, resultCode, data);

switch(reqCode)
{
   case (PICK_CONTACT):
     if (resultCode == Activity.RESULT_OK)
     {
         Uri contactData = data.getData();
         Cursor c = managedQuery(contactData, null, null, null, null);
      if (c.moveToFirst())
      {
      String id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

      String hasPhone =
      c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

      if (hasPhone.equalsIgnoreCase("1")) 
      {
     Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
      ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
        phones.moveToFirst();
        String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
       // Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show();
        setCn(cNumber);
      }
     }
   }
}