プログラムで連絡先の名前と名前を変更しようとしています。仕事をするために私が使用したコードスニペットは次のとおりです。
operations.add( ContentProviderOperation.newUpdate( Data.CONTENT_URI )
.withSelection( RawContacts._ID + "=?",
new String[] { String.valueOf( mSmartphoneContactKey) } )
.withValue( ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
mContactName.getEditableText().toString() )
.withValue( ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME,
mContactLastName.getEditableText().toString() )
.build() );
mSmartphoneContactKey
列に含まれるデータが入力されます
ContactsContract.Contacts._ID
これは、コンテンツプロバイダーを使用して連絡先を読み取るときにプロジェクション配列に含まれています。
問題は、一部の連絡先では、名前と姓が変更されず、代わりに電話の種類が変更されることです。実は原因がわかりません。アドバイスをいただければ幸いです。
データテーブルが使用しなければならないドキュメントをさらに読みました。私は以下のようにコードを変更しました...まだ機能していません
operations.add( ContentProviderOperation.newUpdate( Data.CONTENT_URI )
.withSelection( Data._ID + " = ? AND " + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'",
new String[] { String.valueOf( mSmartphoneContactId ) } )
.withValue( ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, mContactName.getEditableText().toString() )
.withValue( ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, mContactLastName.getEditableText().toString() )
.build() );
私を助けてください!