0

プログラムで連絡先の名前と名前を変更しようとしています。仕事をするために私が使用したコードスニペットは次のとおりです。

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() );

私を助けてください!

4

1 に答える 1

2

解決しました!間違ったIDが渡されました。DATAテーブルからデータに沿ってIDを取得する必要があります。

于 2012-05-18T14:35:04.537 に答える