首页 > 解决方案 > 如何使用 xamarin 表单以 .vcf /vcard 格式与 whtsapp 共享我的应用程序的联系人数据

问题描述

我有一个应用程序可以在您输入数据后创建一个 .vcf 文件。它存储手机提供的存储空间,我想单击列表视图项并获取 vcf 文件并通过电子邮件、SMS、WhatsApp、Skype 等共享它如何在 IOS 和 Android 中实现。

谢谢

标签: xamarinxamarin.formsxamarin.iosxamarin.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());
        }
    }

推荐阅读