如何避免ContactsContract.CommonDataKinds中的facebook,whatsapp联系人

时间:2013-08-02 08:21:28

标签: android contactscontract

Om按钮点击,我显示联系人选择框。从哪里我选择任何联系方式。然后显示联系人的电话号码。

但问题是,有时我在选择联系人后看不到电话号码。我不知道原因,但我想这是因为选择器也显示了facebook,watsapp联系人。

如何过滤仅在选择器中显示的电话和SIM卡联系人?

我正在创建选择器:

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        startActivityForResult(intent, 1);

递交并显示如下数字:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
Cursor c = null;
try {
c = getContentResolver().query(uri, new String[]{ 
ContactsContract.CommonDataKinds.Phone.NUMBER,  
ContactsContract.CommonDataKinds.Phone.TYPE },
null, null, null);

if (c != null && c.moveToFirst()) {
String number = c.getString(0);
int type = c.getInt(1);
showSelectedNumber(type, number);
}
} finally {
if (c != null) {
c.close();
}
}
}
}
}

public void showSelectedNumber(int type, String number) {
    Toast.makeText(this, type + ": " + number, Toast.LENGTH_LONG).show();      
}

任何人都可以帮助我。所以每当我选择一个联系人时,它必须显示该号码? 提前谢谢

1 个答案:

答案 0 :(得分:0)

这是我在我的应用中使用的。

    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);

    if (Build.VERSION.SDK_INT <= 4) {
        intent.setType(Contacts.People.CONTENT_ITEM_TYPE);
    } else {
        intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
    }