2013-10-14 111 views
0

我正在尝试创建应用程序进行通信。我从android通讯簿显示联系人列表。我如何指示联系人安装了我的应用程序(如Viber)?我需要在数据库中创建自己的表与联系人的副本或联系人ContentProvider可以帮助我吗?Android联系人内容提供商

viber example

回答

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); 
     } 
    } 
    } 
} 
+0

感谢答复。但我需要我的应用程序中的联系人列表。为此我使用内容提供程序返回游标。但是Contact.Content_uri返回游标而没有附加字段,而Data.content_uri返回重复记录 –

+0

您可以处理重复的联系人 –

+0

是的,我可以。为此,我需要在某处存储联系人。我没有找到解决方案,使用一个查询从手机和内容提供商的其他数据阅读联系 –