无法使用 Xamarin.Android 中的 Xamarin.Mobile 组件保存联系人

本文关键字:Xamarin Mobile 组件 保存 联系人 中的 Android | 更新日期: 2023-09-27 17:56:20

我在Xamarin.Android项目中使用了这个Xamarin.Mobile组件。经过大量的谷歌搜索和浏览他们的样本,我只找到了将联系人从手机检索到我的应用程序的方法。

下面是我的代码:

        AddressBook book = new AddressBook(context)
            {
                    PreferContactAggregation = true
            };

        Phone ph = new Phone(){
        Type = PhoneType.Mobile,
        Number = "9952429044"
        };
       Contact ct = new Contact()
        {
            DisplayName = "Sai Ram",
            FirstName = "Om",
            MiddleName = "Sai",
            LastName = "Ram",
            Phones = new List<Phone>(){ph}
        };

我需要将联系人对象保存到手机的地址簿中。我在Xamarin.Contacts中找不到任何像book.Save(contact)这样的方法.

无法使用 Xamarin.Android 中的 Xamarin.Mobile 组件保存联系人

Xamarin.Mobile 的 API 仅用于读取联系人,而不用于添加。

编辑

以下是如何将带有手机号码的新联系人添加到联系人的简短示例。

List<ContentProviderOperation> ops = new List<ContentProviderOperation>();
int rawContactInsertIndex = ops.Count;
ops.Add(ContentProviderOperation.NewInsert(Android.Provider.ContactsContract.RawContacts.ContentUri)
    .WithValue(Android.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountType, null)
    .WithValue(Android.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountName, null).Build());
ops.Add(ContentProviderOperation
    .NewInsert(Android.Provider.ContactsContract.Data.ContentUri)
    .WithValueBackReference(Android.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactInsertIndex)
    .WithValue(Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype, Android.Provider.ContactsContract.CommonDataKinds.StructuredName.ContentItemType)
    .WithValue(Android.Provider.ContactsContract.CommonDataKinds.StructuredName.DisplayName, "Vikas Patidar") // Name of the person
    .Build());
ops.Add(ContentProviderOperation
    .NewInsert(Android.Provider.ContactsContract.Data.ContentUri)
    .WithValueBackReference(
        ContactsContract.Data.InterfaceConsts.RawContactId, rawContactInsertIndex)
    .WithValue(Android.Provider.ContactsContract.Data.InterfaceConsts.Mimetype, Android.Provider.ContactsContract.CommonDataKinds.Phone.ContentItemType)
    .WithValue(Android.Provider.ContactsContract.CommonDataKinds.Phone.Number, "9999999999") // Number of the person
    .WithValue(Android.Provider.ContactsContract.CommonDataKinds.Phone.InterfaceConsts.Type, "mobile").Build()); // Type of mobile number  
// Asking the Contact provider to create a new contact                 
try {
    ContentResolver.ApplyBatch(ContactsContract.Authority, ops);
} catch (Exception ex) {
    Toast.MakeText(this, "Exception: " + ex.Message, ToastLength.Long).Show();
}

您可以在此处找到有关如何保存其他字段的更多详细信息。不要忘记向应用添加WRITE_CONTACTS权限。