Android - 通过电话接收联系人更改

时间:2011-11-07 21:32:59

标签: android contacts contactscontract

添加,删除或修改手机联系人时是否可以通知广播接收者或服务?

我正在制作一个需要快速访问手机联系人的应用程序,因为我想到的是通过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;
}

由于

1 个答案:

答案 0 :(得分:1)

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