Android - получать контакты изменения по телефону - PullRequest
2 голосов
/ 08 ноября 2011

Можно ли получать широковещательный приемник или услугу для уведомления о добавлении, удалении или изменении телефонного контакта?

Я делаю приложение, которому нужен быстрый доступ к телефонному контакту, для чего я думал об одной копии телефонных контактов sqlite, доступ к которым осуществляется через contactsContracts.

Если это невозможно, кто-нибудь знает, как улучшить скорость ответа следующего кода, чтобы увидеть, есть ли номер в списке контактов телефона?

    public boolean isNumberInContacts(String Num){

    try {
        Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext()) {
            String colID = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
            String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

            if (Integer.parseInt(hasPhone)==1) {

                Cursor phone = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ colID,null, null); 

                for (int i=0;phone.moveToNext();i++){
                    if (Num.equals(mNumber.getNumber((phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)))))){
                        return true;                        
                    }
                }
            }
        }
        cursor.close();
    } catch (Exception e) { 
        e.printStackTrace(); 
        Log.d(TAG, "Error when validate number in contacts: "+ e.toString()); 
    }       
    return false;
}

Спасибо

1 Ответ

1 голос
/ 08 ноября 2011

нет трансляции при добавлении контакта.зарегистрируйте обозреватель контента в базе данных контактов, чтобы проверить его изменения.

...