当 Android 手机接到电话时,它会自动检查电话是否存在于自己的联系人数据库中。我想知道是否有一种简单的方法可以访问该信息。我有一个PhoneStateListener
在振铃状态下执行某些操作的设备,我想检查来电者是否在联系人列表中。
有没有办法在不通过联系人的情况下做到这一点ContentProvider
?
手机应用程序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();
}
这是 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();
}