php 如何提示Android用户将联系人详细信息从vCard文件(vcf)直接保存到Android设备中

dsekswqp  于 2023-02-15  发布在  PHP
关注(0)|答案(1)|浏览(141)

我正在尝试创建一个数字卡系统,并尝试将一个vcf文件保存到Android手机中,该手机会提示用户直接将联系人详细信息保存到Android设备中。以下代码在iPhone上可用,但在Android设备上不可用。

<script>
  var saveBtn = document.getElementById("save-btn");
  saveBtn.addEventListener("click", function() {

    var contact = {
      name: "<?php echo $row["fullname"]; ?>",
      phone: "<?php echo $row["phone"]; ?>",
      email: "<?php echo $row["email"]; ?>",
      company: "<?php echo $row["company"]; ?>",
      socialpro: "<?php echo $row["city"]; ?>"
    };

    var vcard = "BEGIN:VCARD\nVERSION:4.0\nFN:" + contact.name + "\nTEL;TYPE=work,voice:" + contact.phone + "\nEMAIL:" + contact.email + "\nEND:VCARD";

    var blob = new Blob([vcard], {
      type: "text/vcard"
    });
    var url = URL.createObjectURL(blob);

    const newLink = document.createElement('a');
    newLink.download = contact.name + ".vcf";
    newLink.textContent = contact.name;
    newLink.href = url;

    newLink.click();

  });
</script>

"我迄今为止的工作"
请点击此链接,您可以在iPhone上保存联系人,但在Android(http://mycontacts.unaux.com/displaycontact1.php?employee_id=1&genlist=list&i=4)上不起作用

工作网站

请参见示例网站(https://digicard.ae/oksana),当您单击“保存到联系人”时,它将同时适用于Android和iPhone。

iklwldmw

iklwldmw1#

您在Android设备上使用此代码时遇到的问题可能与Android处理vCard文件下载和保存的方式有关。
一个可能的解决方案是触发vCard文件的下载,但不是直接打开文件,而是让用户决定将其保存在哪里。可以通过使用link元素上的“download”属性并将其值设置为所需的文件名来实现这一点。
尝试使用以下代码,看看它是否工作:

<script>
  var saveBtn = document.getElementById("save-btn");
  saveBtn.addEventListener("click", function() {

    var contact = {
      name: "<?php echo $row["fullname"]; ?>",
      phone: "<?php echo $row["phone"]; ?>",
      email: "<?php echo $row["email"]; ?>",
      company: "<?php echo $row["company"]; ?>",
      socialpro: "<?php echo $row["city"]; ?>"
    };

    var vcard = "BEGIN:VCARD\nVERSION:4.0\nFN:" + contact.name + "\nTEL;TYPE=work,voice:" + contact.phone + "\nEMAIL:" + contact.email + "\nEND:VCARD";

    var blob = new Blob([vcard], {
      type: "text/vcard;charset=utf-8"
    });

    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.download = contact.name + ".vcf";
    link.click();

  });
</script>

这应该允许用户下载vCard文件并选择将其保存在Android设备上的位置。

相关问题