4

こんにちは、私は ContentResolver を使用して連絡先データベースから連絡先情報を取得しようとしています.

したがって、基本的に、これらの詳細を取得するには、連絡先ごとに 3 つのクエリを作成する必要があります。

私が知りたいのは、これを達成するためのより簡単で効率的な方法があるということです。

しかし、以下のコードを使用すると例外が発生します。

java.lang.IllegalArgumentException: Invalid column data1

同じ問題の解決策を見つけるために、どんな体でも私を助けることができますか.

Uri uri                = ContactsContract.Contacts.CONTENT_URI;
String[] projection    = new String[] { ContactsContract.Contacts._ID,
                                        ContactsContract.Contacts.DISPLAY_NAME,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                                        ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS,
                                        ContactsContract.CommonDataKinds.Photo.PHOTO};
String selection       = ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '1'";
String[] selectionArgs = null;
String sortOrder       = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

Cursor contacts          = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
4

2 に答える 2

4

多分問題はであるでしょうselection。あなたの方法を私の方法に置き換えてください。

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[] { ContactsContract.Contacts._ID,
                                        ContactsContract.Contacts.DISPLAY_NAME,
                                        ContactsContract.CommonDataKinds.Phone.NUMBER,
                                        ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS,
                                        ContactsContract.CommonDataKinds.Photo.PHOTO};
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER  + " = ?";
String[] selectionArgs = { String.valueOf(1) }; 
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

Cursor contacts = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);

常に使用する必要がありますparametrized statements。あなたのアプローチは危険です。そしてあなたのURIは悪かった。

于 2012-06-14T10:31:23.660 に答える
1

どうぞ

交換

ContactsContract.Contacts.CONTENT_URI;

ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
于 2012-06-14T10:43:39.580 に答える