xamarin - 如何使用 xamarin 表单以 .vcf /vcard 格式与 whtsapp 共享我的应用程序的联系人数据
问题描述
我有一个应用程序可以在您输入数据后创建一个 .vcf 文件。它存储手机提供的存储空间,我想单击列表视图项并获取 vcf 文件并通过电子邮件、SMS、WhatsApp、Skype 等共享它如何在 IOS 和 Android 中实现。
谢谢
解决方案
我得到了创建 .vcf 文件的答案,如下所示。要共享该文件,请点击此链接:https ://github.com/adamped/ShareDialog
private void Share_Clicked(object sender, EventArgs e) { try { var _btn = sender as Button; var record = _btn.BindingContext 作为联系人;int tempcontactID = record.ContactID;
if (record.CardFrontImage == null)
{
record.CardImage = record.CardBackImage;
}
else
{
record.CardImage = record.CardFrontImage;
}
string baseimage = Convert.ToBase64String(record.CardImage);
var vcf = new StringBuilder(); //vcf code start
vcf.AppendLine("BEGIN:VCARD");
vcf.AppendLine("VERSION:3.0");
vcf.AppendLine($"N:{record.ContactName};{string.Empty}; ;;");
vcf.AppendLine($"FN:{record.ContactName}");
vcf.AppendLine($"ORG:{record.CompanyName}");
vcf.AppendLine($"TITLE:{record.Designation}");
vcf.AppendLine($"PHOTO;ENCODING=BASE64;TYPE=PNG:{baseimage}");
vcf.AppendLine($"TEL;TYPE=work,voice;VALUE=uri:tel:{record.PhoneNumber}");
vcf.AppendLine("END:VCARD");
string fileName = Path.Combine("/storage/emulated/0/Android/data/com.Gamma.GammaNetworkingApp/files/", record.ContactID + record.ContactName + ".vcf");
using (var writer = new StreamWriter(fileName))
{
writer.Write(vcf.ToString());
}
string text = File.ReadAllText(fileName);
bool doesExist = File.Exists(fileName);
if (doesExist == true)
{
var share = DependencyService.Get<IShare>();
share.Show("Contact share", record.ContactName, fileName);
}
}
catch (Exception ex)
{
string test = ex.ToString();
Navigation.PushAsync(new HomePage());
}
}