次のコードを使用して、新しい連絡先を作成しています。Android が提供する ContactManager の例に厳密に従います。問題は、作成した連絡先が Android に付属の連絡先アプリに表示されないことです。それにもかかわらず、電話帳からすべての連絡先を読み込むと、新しく作成された連絡先が表示されます。
private void insertPBEntry() は、RemoteException、OperationApplicationException をスローします {
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Account type")
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Account name")
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "TOTAL_NEW")
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "9090")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,Phone.TYPE_MOBILE)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
私は懸命に検索しましたが、まだ答えを見つけていません。問題が私の文字列「アカウントの種類」と「アカウント名」に関係している可能性があることを示唆する1つの回答が見つかりました。私の場合、アカウントを作成する必要はまったくありません。私が欲しいのは、名前、電子メール/メールアドレス、電話で新しい連絡先を追加することだけです.
みんなありがとう!