2010-09-26 52 views
6

我需要修复我的旧应用程序中的错误。部分错误是我如何选择联系人。以下是我需要:如何从电话号码中仅从谷歌联系人(不是Facebook等)中选择联系人?

  1. 接触必须从 “正常”的谷歌联系人列表,即 我并不想从Facebook或任何类似的接触 。
  2. 联系人必须至少有一个电话号码。
  3. 联系人必须来自旧的android.provider.Contacts供应商。
  4. 如果我可以使用Intent来获取联系人URI而无需自己创建选择列表等,那么这是一项奖励。

听起来很简单,但我真的很挣扎。这就是我想要的:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = new Intent(Intent.ACTION_PICK, Contacts.People.CONTENT_URI); 
    startActivityForResult(intent, PICK_CONTACT_REQUEST); 
} 

这很好。我仍然看到没有电话号码的联系人,但我可以忍受。更糟糕的是,我仍然看到名单上的Facebook联系人!这似乎与在Froyo API for the deprecated Contacts content provider发现的以下报价相矛盾:

这些API已被ContactsContract取代。较新的API允许访问多个帐户并支持类似联系人的聚合。这些API继续工作,但只会返回创建的第一个Google帐户的数据,这与原始行为相符。

这听起来像我想要的,但唉,不是我得到的。

最后,这里是我的,我希望有人能够回答具体问题:使用android.provider.Contacts内容提供商时

  1. 为什么我看到Facebook联系人?
  2. 如果这不起作用,我该怎么让用户选择一个谷歌联系人的电话号码?

非常感谢。 古斯塔夫

+0

难道ü想出了一个解决方案? – 2011-04-28 17:38:20

回答

0

我有一个类似的问题,这至少给你的电话号码(包括Facebook的)接触......

Intent intent = new Intent(Intent.ACTION_PICK); 
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 
startActivityForResult(intent, PICK_CONTACT_REQUEST);