C# 无法使用Xamarin.Android中的Xamarin.Mobile组件保存联系人
我在Xamarin.Android项目中使用这个。经过大量的谷歌搜索和查看他们的样本后,我找到了从手机到我的应用程序检索联系人的唯一方法 下面是我的代码:C# 无法使用Xamarin.Android中的Xamarin.Mobile组件保存联系人,c#,android,xamarin,xamarin.mobile,C#,Android,Xamarin,Xamarin.mobile,我在Xamarin.Android项目中使用这个。经过大量的谷歌搜索和查看他们的样本后,我找到了从手机到我的应用程序检索联系人的唯一方法 下面是我的代码: AddressBook book = new AddressBook(context) { PreferContactAggregation = true }; Phone ph = new Phone(){
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.Savecontact这样的方法。Xamarin.Mobile的API仅用于读取联系人,不用于添加联系人 编辑 下面是一个简短的示例,介绍了如何使用手机号码将新联系人添加到您的联系人中 列表操作=新列表; int rawContactInsertIndex=ops.Count; ops.AddContentProviderOperation.NewInsertAndroid.Provider.ContactsContract.RawContacts.ContentUri .WithValueAndroid.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountType,空 .WithValueAndroid.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountName,null.Build; ops.AddContentProviderOperation .NewInsertAndroid.Provider.ContactsContract.Data.ContentUri .WithValueBackReferenceAndroid.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactInsertIndex .WithValueAndroid.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataTypes.StructuredName.ContentItemType .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.StructuredName.DisplayName,Vikas Patidar//人员姓名 建筑 ops.AddContentProviderOperation .NewInsertAndroid.Provider.ContactsContract.Data.ContentUri .WithValueBackReference ContactsContact.Data.InterfaceConsts.RawContactId,rawContactInsertIndex .WithValueAndroid.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataTypes.Phone.ContentItemType .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.Phone.Number,9999999999//联系人号码 .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.Phone.InterfaceConsts.Type,mobile.Build;//手机号码类型 //要求联系人提供商创建新联系人 试一试{ ContentResolver.applybatchcontacts.contract.Authority,ops; }捕获异常{ Toast.maketexthis,异常:+ex.Message,ToastLength.Long.Show; } 您可以找到有关如何保存其他字段的更多详细信息。
别忘了向应用程序添加“写入联系人”权限。Xamarin.Mobile的API仅用于读取联系人,不用于添加联系人 编辑 下面是一个简短的示例,介绍了如何使用手机号码将新联系人添加到您的联系人中 列表操作=新列表; int rawContactInsertIndex=ops.Count; ops.AddContentProviderOperation.NewInsertAndroid.Provider.ContactsContract.RawContacts.ContentUri .WithValueAndroid.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountType,空 .WithValueAndroid.Provider.ContactsContract.RawContacts.InterfaceConsts.AccountName,null.Build; ops.AddContentProviderOperation .NewInsertAndroid.Provider.ContactsContract.Data.ContentUri .WithValueBackReferenceAndroid.Provider.ContactsContract.Data.InterfaceConsts.RawContactId,rawContactInsertIndex .WithValueAndroid.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataTypes.StructuredName.ContentItemType .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.StructuredName.DisplayName,Vikas Patidar//人员姓名 建筑 ops.AddContentProviderOperation .NewInsertAndroid.Provider.ContactsContract.Data.ContentUri .WithValueBackReference ContactsContact.Data.InterfaceConsts.RawContactId,rawContactInsertIndex .WithValueAndroid.Provider.ContactsContract.Data.InterfaceConsts.Mimetype,Android.Provider.ContactsContract.CommonDataTypes.Phone.ContentItemType .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.Phone.Number,9999999999//联系人号码 .WithValueAndroid.Provider.ContactsContract.CommonDataTypes.Phone.InterfaceConsts.Type,mobile.Build;//手机号码类型 //要求联系人提供商创建新联系人 试一试{ ContentResolver.applybatchcontacts.contract.Authority,ops; }捕获异常{ Toast.maketexthis,异常:+ex.Message,ToastLength.Long.Show; } 您可以找到有关如何保存其他字段的更多详细信息。
别忘了向应用程序中添加“写入联系人”权限。那么,如何从我的应用程序中添加联系人?我已尝试使用本机方式添加联系人。但是,它无法保存显示名称,只保存了联系人号码。更新了我的答案,添加了示例。我遇到编译问题,在尝试Android.App.Application.Context.ContentResolver.ApplyBatchContactsContract.Authority,ops后不得不更改行@stepheaw应该是[Context].ContentResolver.ApplyBatchContactsContract.Authority,ops;其中,[Context]是您的活动上下文,也就是说,这是活动上下文或应用程序上下文。所以如果你从你的activ运行这个代码
“它将按原样工作。”阿图尔·萨姆苏季诺夫说得更清楚了,谢谢。你有更新联系人的示例吗?那么,如何从我的应用程序中添加联系人?我已尝试使用本机方式添加联系人。但是,它无法保存显示名称,只保存了联系人号码。更新了我的答案,添加了示例。我遇到编译问题,在尝试Android.App.Application.Context.ContentResolver.ApplyBatchContactsContract.Authority,ops后不得不更改行@stepheaw应该是[Context].ContentResolver.ApplyBatchContactsContract.Authority,ops;其中,[Context]是您的活动上下文,也就是说,这是活动上下文或应用程序上下文。因此,如果您在活动中运行此代码,它将按原样工作。@Artur Shamsutdinov现在更有意义了,谢谢。您有更新联系人的样本吗?