我正在创建一个混合移动应用程序,使用Xamarin.Forms。
我希望用户点击一个按钮,应用程序中的联系人就会插入到手机的联系人中,包括个人资料图片。
到目前为止,iOS端的一切都在工作,我成功地插入了个人资料图片。
我不能让它在Android上工作。我已经试过在这里看,但所有的解决方案都使用Java。插入姓名,号码和电子邮件工作完美。
下面是我目前的代码:
public void SaveContacts(string name, string number, string email, string job, string company, byte[] imageData)
{
try
{
var intent = new Intent(Intent.ActionInsert);
intent.SetType(ContactsContract.Contacts.ContentType);
if (!string.IsNullOrWhiteSpace(name))
intent.PutExtra(ContactsContract.Intents.Insert.Name, name);
if (!string.IsNullOrWhiteSpace(number))
intent.PutExtra(ContactsContract.Intents.Insert.Phone, number);
if (!string.IsNullOrWhiteSpace(email))
intent.PutExtra(ContactsContract.Intents.Insert.Email, email);
if (imageData.Length != 0)
{
// INSERT PROFILE PICTURE HERE
}
Platform.CurrentActivity.StartActivity(intent);
}
catch (Exception ex)
{
DependencyService.Get<ILogger>()?.Error(ex);
}
}
如何将个人资料图片添加到联系人?
1条答案
按热度按时间pkwftd7m1#
根据这个关于Insert Contact (ContactsContract) via Intent with Image (Photo)的案例,您需要使用
intent.putParcelableArrayListExtra(Insert.DATA, data)
方法将照片添加到新联系人中。但是我已经创建了一个示例来测试它。这个方法有一个bug。我使用下面的代码:
但是它会显示类型转换错误。即使类
ContentValues
是从IParcelable
接口继承的。错误仍然会显示。你可以在github上向xamarin报告。另外,我也尝试使用using the content provider to insert a contact的方法,但是
RawContacts
没有ACCOUNT_TYPE属性。所以对于这个bug,你似乎不能用原生api给联系人添加个人资料图片。