首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Xamarin.Mobile组件在Xamarin.Android中保存联系人

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

Stack Overflow用户
提问于 2015-06-16 05:28:20
回答 1查看 1.9K关注 0票数 1

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

下面是我的代码:

代码语言:javascript
复制
        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中找不到像Xamarin.Contacts这样的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-16 09:41:52

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

编辑

以下是如何在联系人中添加新的移动电话号码的简短示例。

代码语言:javascript
复制
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权限。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30859444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档