如何从谷歌联系人(而不是Facebook等)中拨打电话号码?

Par*_*oos 6 android

我需要修复我的旧应用程序中的错误.部分错误是我如何选择联系人.这就是我需要的:

  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);
}
Run Code Online (Sandbox Code Playgroud)

这很好用.我仍然看到没有电话号码的联系人,但我可以忍受.更糟糕的是,我仍然在列表中看到facebook联系人!这似乎与Froyo API中针对已弃用的联系人内容提供程序的以下引用相矛盾:

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

这听起来就像我想要的那样,但唉,不是我得到的.

最后,这是我希望有人能回答的具体问题:

  1. 为什么我在使用android.provider.Contacts内容提供商时会看到Facebook联系人?
  2. 如果这不起作用,我还能如何让用户选择带有电话号码的谷歌联系人?

非常感谢.古斯塔夫

out*_*ast 0

我遇到了类似的问题,这至少给你提供了电话号码的联系方式(包括facebook)......

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT_REQUEST);
Run Code Online (Sandbox Code Playgroud)