【问题标题】:Android - Receive Contacts changes on telephoneAndroid - 在电话上接收联系人更改
【发布时间】:2011-11-07 21:32:58
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: android contacts contactscontract


【解决方案1】:

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

【讨论】:

  • 你能给我一个例子吗?谢谢
  • 你需要一个正在运行的服务(或者我猜的活动)来注册一个内容观察者。
  • 这个帖子展示了一个很好的例子,说明如何制作自己的内容观察者stackoverflow.com/questions/1401280/…
猜你喜欢
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-14
  • 2011-07-30
相关资源
最近更新 更多