質問

ContactScontract APIを使用して、連絡先にいくつかのメモを追加しようとしています。さまざまな連絡先IDと生の連絡先IDを完全に理解しているかどうかはわかりません。私の問題は、議論されているものにかなり似ているようです ここ.

欲しい:1。特定の連絡先を見つけます。 2.見つかったら、特定のメモを挿入します

私は次のようにそれをやっています:

Cursor contacts = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);

while(contacts.moveToNext()){

      Log.d("TC", "Found : " + name);

      int rid = contacts.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID);
      int rawContactID = contacts.getInt(rid);

      int nameIdx = contacts.getColumnIndex(ContactsContract.Data.DISPLAY_NAME);
      String name = contacts.getString(nameIdx);

      if <Some condition>{
            ContentValues contentValues =  new ContentValues();
            contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactID);
            contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE);
            contentValues.put(ContactsContract.CommonDataKinds.Note.NOTE, "Bazzinga !");
            int stat = getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, contentValues, null , null);
            Log.d("TC", "Update returned : " + stat);
      }

}

エラーがありません。しかし、連絡先は更新されません:(

役に立ちましたか?

解決

を交換します

getContentResolver().update(...)

getContentResolver().insert( Data.CONTENT_URI, contentValues ); 

また、data.content_uri queryにwhereステートメントがある必要があります。データテーブルには、同じraw_contact_idを使用して複数のエントリがあるためです。 「data.mimeType = structuredName.content_item_type」を使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top