RAW_CONTACT_ID & SOURCE_IDが役に立ちます。しかし、私はそれをプログラム的に見つけることはできません。以下は私が試しているコードです。連絡先が作成されたソースIDを知りたい場合は、Googleで作成した連絡先が一意の連絡先IDであることを知りたい場合は
Cursor c = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, new String[]
{ContactsContract.RawContacts._ID}, ContactsContract.RawContacts.CONTACT_ID + "=?",
new String[]{String.valueOf(cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)))}, null);
try {
if (c.moveToFirst()) {
long rawContactId = c.getLong(0);
LogShowHide.LogShowHideMethod("== rawContactId ===", "" + rawContactId);
}
} finally {
c.close();
}
Log.e(TAG, "cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.SOURCE_ID)): " + cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.SOURCE_ID)));
Log.e(TAG, "cur.getString(cur.getColumnIndex(ContactsContract.Contacts.Data.RAW_CONTACT_ID): " + cur.getString(cur.getColumnIndex(ContactsContract.Contacts.Data.RAW_CONTACT_ID)));
Log.e(TAG, "cur.getString(cur.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID)): " + cur.getString(cur.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID)));
私はエラーを取得しています:
CursorWindow: Failed to read row 0, column -1 from a CursorWindow which has 2 rows, 38 columns.
をSystem.err:java.lang.IllegalStateException:0行を読み取ることができませんでした、COL -1 CursorWindowから。カーソルがデータにアクセスする前に、カーソルが正しく初期化されていることを確認してください。
私のコードに誤りがありましたら教えてください。
更新コード:Cursor cur = getContentResolver().query( ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts._ID, ContactsContract.RawContacts.SOURCE_ID}, ContactsContract.RawContacts.CONTACT_ID + "=?", null, null); try { if (cur.moveToFirst()) { long rawContactId = cur.getLong(0); LogShowHide.LogShowHideMethod("== rawContactId ===", "" + rawContactId); LogShowHide.LogShowHideMethod(TAG, "ContactsContract.RawContacts.SOURCE_ID: " + cur.getString(cur.getColumnIndex(ContactsContract.RawContacts.SOURCE_ID))); LogShowHide.LogShowHideMethod(TAG, "ContactsContract.Contacts.Data.RAW_CONTACT_ID: " + cur.getString(cur.getColumnIndex(ContactsContract.Contacts.Data.RAW_CONTACT_ID))); LogShowHide.LogShowHideMethod(TAG, "ContactsContract.Data.RAW_CONTACT_ID: " + cur.getString(cur.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID))); } } catch (Exception e) { e.printStackTrace(); } finally { cur.close(); }
ありがとうございます。 Cursor cur = getContentResolver()。クエリ( )ContactsContract.RawContacts.CONTENT_URI、 新しいString [] {ContactsContract.RawContacts._ID、ContactsContract.RawContacts.SOURCE_ID}、 ContactsContract。 RawContacts.CONTACT_ID + "=?"、 null、 null); –
コメントにコードを入れるのではなく、質問を更新する必要があります。とにかく、選択フィールドで '? 'を使用している場合は、クエリの第4フィールドに値を入れなければなりません。' selectionArgs' – marmor