我试图找出来电显示是否在联系人列表中。所以我为此使用的代码:
ContentResolver resolver = this.service.getContentResolver();
String number = PhoneLookup.NUMBER;
String[] projections = { number };
String selectionClause = number + " = ?";
String[] selectionClauseArgs = { callerId };
Cursor people = resolver.query(
ContactsContract.Contacts.CONTENT_URI, projections,
selectionClause, selectionClauseArgs, null);
return people.getCount() > 0 ? true : false;
我将过滤功能提供给ContentResolver
自身,而不是获取所有内容,遍历它们并一一检查。
但是由于某种原因,我收到以下错误(有很多代码,但它们工作得很好,因为它们只是订阅电话事件以便在有人打电话时接收来电显示!”)
08-28 19:20:05.903: E/AndroidRuntime(737): java.lang.IllegalArgumentException: Invalid column number
我不知道什么是无效的。我使用的是PhoneLookup.NUMBER
不变的右列名称。之前在这里问过一个类似的问题:How to read contacts on Android 2.0 which I follow。