2011-11-07 12 views
2

電話の連絡先の追加、削除、または変更時にブロードキャスト受信者またはサービスに通知することはできますか?Android - 電話での連絡先の変更の受信

私はcontactsContractsを介してアクセスされるように1つのコピー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; 
} 

おかげ

+0

同期アダプタでは、これを行うことができます。http://developer.android.com/resources/samples/SampleSyncAdapter/index.html - 同期を有効にする必要があります。 – Jens

答えて

1

接触が追加されていない放送。コンテンツオブザーバを連絡先データベースに登録して、変更を確認します。

+0

私にこれの例を教えてもらえますか?おかげで – itaravika

+0

あなたはコンテンツオブザーバーを登録させるために実行中のサービス(または私が推測すること)が必要になります。 – Jens

+0

このスレッドは、あなた自身のコンテンツオブザーバーを作る方法に関する非常に良い例を示しました。http://stackoverflow.com/questions/1401280/how-to-listen-for-changes-in-contact-database – josephus

関連する問題