発信者番号が連絡先リストにあるかどうかを調べようとしています。だから私はそのために使用しているコード:
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
すべてを取得し、それらを繰り返し処理して 1 つずつチェックするのではなく、フィルタリング機能をそれ自体に与えています。
しかし、何らかの理由で次のエラーが表示されます (多くのコードがありますが、誰かが呼び出しているときに発信者 ID を受信するためにテレフォニー イベントをサブスクライブしているだけなので、問題なく動作しています!")
08-28 19:20:05.903: E/AndroidRuntime(737): java.lang.IllegalArgumentException: Invalid column number
何が無効なのかわかりません。PhoneLookup.NUMBER
定数である右の列名を使用しています。同様の質問が以前にここで尋ねられました: Android 2.0で連絡先を読み取る方法。