Je passe le nom du compte d'une liste à cette méthode. Maintenant je veux savoir lequel de ces noms de compte sont lus seulement dans la table de contacts ainsi je n'itère le curseur qu'une fois pour obtenir l'identification de contact du curseur brut. Après avoir obtenu le contact_id, j'utilise le curseur du téléphone pour vérifier si l'identifiant donné est en lecture seule ou non mais je suis incapable de le faire. s'il vous plaît consulter ci-dessousComment obtenir les noms de compte en lecture seule de l'ID de contact dans Contacts dans Android
private void displayAllContactsByType(String accountName) {
Cursor rawCursor,phones = null;
rawCursor = cResolver.query(
ContactsContract.RawContacts.CONTENT_URI,
new String[]{ContactsContract.RawContacts.CONTACT_ID},
ContactsContract.RawContacts.ACCOUNT_NAME + "= ?",
new String[]{accountName},
null);
int contactIdColumn = rawCursor.getColumnIndex(ContactsContract.RawContacts.CONTACT_ID);
int rawCursorCount = rawCursor.getCount();
Utils.Log("Account Name", accountName);
Utils.Log("Raw Size", " " + rawCursorCount);
rawCursor.moveToFirst();
Long contactId = rawCursor.getLong(contactIdColumn);
phones = cResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ? AND "+ContactsContract.RawContacts.ACCOUNT_NAME + "= ?",
new String[]{String.valueOf(contactId),accountName},
null);
phones.moveToFirst();
String isReadOnly= phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.IS_READ_ONLY));
Utils.Log("Raw Size", isReadOnly);
}
Merci beaucoup. –
Je voudrais également obtenir seulement le compte avec l'adaptateur de synchronisation ayant des contacts de téléphone seulement. –
que voulez-vous dire par «avoir des contacts téléphoniques seulement»? vous voulez dire le compte de contacts spéciaux appelé "Téléphone seulement (non synchronisé)" si vous le faites, il n'a pas de SyncAdapter, parce que c'est un compte non synchronisé – marmor