2

是否可以在添加、删除或修改电话联系人时通知广播接收器或服务?

我正在制作一个需要快速访问电话联系人的应用程序,因为我想通过contactsContracts 访问一个副本sqlite 电话联系人。

如果不可能,有谁知道如何提高以下代码的响应速度以查看电话的联系人列表中是否有号码?

    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;
}

谢谢

4

1 回答 1

1

添加联系人时不广播。在联系人数据库中注册一个内容观察者以检查对它的更改。

于 2011-11-07T21:54:40.427 回答