6

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

有没有办法在不通过联系人的情况下做到这一点ContentProvider

4

2 回答 2

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();
}
于 2010-02-03T17:05:40.673 回答
3

这是 2.0 及更高版本的代码

    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);        

    if (cursor != null && cursor.moveToFirst()) {
        String name = cursor.getString(0);
        cursor.close();
    } 
于 2010-07-24T09:00:24.283 回答