2017-01-03 5 views

答えて

0

私は上記の質問の答えを見つけましたが、それがあなたに役立つと思います。

ケース1:CALLER_IS_SYNCADAPTER WITH INSERT:

1が作業URIに追加する必要があり、あなたのコンテンツ・プロバイダ操作であなたの連絡先情報を挿入しながら。たとえば、

ArrayList ops = new ArrayList();

ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE、account.type) .withValue(RawContacts.ACCOUNT_NAME、account.name).build())。

ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 

      Uri myContactUri = res[0].uri; 

      myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); 

ケース2:CALLER_IS_SYNCADAPTER WITH UPDATE:

のArrayList OPS =新しいArrayListを()。

ops.add(ContentProviderOperation.newUpdate(RawContacts.CONTENT_URI).withSelection(selectPhone、phoneArgs) .withValue(RawContacts.DIRTY、0).build())。

ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 

      Uri myContactUri = res[0].uri; 

      myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); 

ケース3: CALLER_IS_SYNCADAPTER WITH DELETE: のArrayList OPS =新しいArrayListを()。

ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(ContactsContract.RawContacts.CONTACT_ID + "=?AND" + ContactsContract.Groups.ACCOUNT_NAME + "=?AND" + ContactsContract.Groups.ACCOUNT_TYPE + "=?"、 新しい文字列[] {o.getPhoneContactId()+ ""、account.name、account.type}).build());

ContentProviderResult[] res = mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops); 

      Uri myContactUri = res[0].uri; 

      myContactUri.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build(); 

この事をやって:)おかげで、いくつかの顔何か問題があれば(、私はコメントで教えてください:ハッピー私は `com.xiaomy`アカウントに連絡先を追加したが、私はないです:)

+0

コーディング'ContactsContract.CALLER_IS_SYNCADAPTER'で' ContactsContract.RawContacts._ID 'を使って'連絡先を削除する 'ことができます –

関連する問題