有没有一种简单的方法可以检查传入的呼叫者是否是Android中的联系人?

时间:2010-02-03 16:52:01

标签: android contacts telephony

当Android手机收到呼叫时,它会自动检查呼叫是否存在于自己的联系人数据库中。我想知道是否有一种简单的方法来访问该信息。我有一个PhoneStateListener在振铃状态下执行某些操作,我想检查传入的呼叫者是否在联系人列表中。

有没有办法在不通过联系人ContentProvider的情况下执行此操作?

2 个答案:

答案 0 :(得分:5)

手机应用也会使用联系人ContentProvider;我不确定你为什么要避免这种情况。此外,它是访问该信息的唯一可公开访问的方式。

无论如何,将数字解析为名称(在这种情况下为2.0之前)非常简单:

Uri uri = Uri.withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));

String name = null;
Cursor cursor = context.getContentResolver().query(uri, 
                    new String[] { Phones.DISPLAY_NAME }, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
    name = cursor.getString(cursor.getColumnIndex(Phones.DISPLAY_NAME));
    cursor.close();
}

答案 1 :(得分:3)