BatchでContactScontractを使用して連絡先を追加します
-
30-09-2019 - |
質問
アドレス帳に新しい連絡先を追加して、新しいContactScontract APIを使用してバッチに適用するのを手伝ってください。これに関する適切なチュートリアルが見つかりませんでした。
1回の連絡先を追加できます。ただし、バッチの更新には不明な連絡先が追加されています。
現在、情報を収集しながらループ中にループしています。書くユーザーの、それをに保存します ArrayList<ContentProviderOperation>
そして適用します
ContentProviderResult[] result = getContentResolver().applyBatch(ContactsContract.AUTHORITY, op_list);
ただし、名前で更新される連絡先は1つだけで、他の連絡先は不明な連絡先として更新されます。
名前、ニックネーム、モバイル、タイトル、電子メール、Skype ID、Work-Countryなどのフィールドを追加するサンプルコードを支援してください。
何か助けがありますか?ありがとう 。
解決 2
これは私のコードです。他の値に必要な場合にフィールドを追加できます。
int backRefIndex = 0
ArrayList<ContentProviderOperation> op_list = new ArrayList<ContentProviderOperation>();
op_list.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI).withValue(RawContacts.ACCOUNT_TYPE, null).withValue(RawContacts.ACCOUNT_NAME, null)
.build());
op_list.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, backRefIndex).withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE).withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "My Name").build());
op_list.add(ContentProviderOperation.newInsert(Data.CONTENT_URI).withValueBackReference(Data.RAW_CONTACT_ID,backRefIndex).withValue(Phone.MIMETYPE,Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER,"1234567890").withValue(Phone.TYPE,Phone.TYPE_MOBILE).withValue(Phone.TYPE, Phone.TYPE_WORK).build());
try {
ContentProviderResult[] result = context.getContentResolver().applyBatchContactsContract.AUTHORITY, op_list);
} catch (OperationApplicationException exp) {
exp.printStackTrace();
} catch (RemoteException exp) {
exp.printStackTrace();
}
他のヒント
次のコードは、rawContactエントリを追加し、名前を追加します。他のフィールドを追加するには、適切な値で名前を追加するために使用される同様のコードを使用します。
// Raw Contact
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI);
builder.withValue(RawContacts.ACCOUNT_NAME, account.name);
builder.withValue(RawContacts.ACCOUNT_TYPE, account.type);
builder.withValue(RawContacts.SYNC1, username);
operationList.add(builder.build());
// Name
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, entry.getName().getFullName().getValue() );
operationList.add(builder.build());
try {
mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList);
} catch (Exception e) {
e.printStackTrace();
}
hth!
所属していません StackOverflow