如何通过编程方式解析联系.vcf文件?

时间:2014-11-06 10:19:17

标签: android

有没有办法以编程方式解析联系人VCF文件?

我能够从联系人创建.vcf但无法解析我的代码。

2 个答案:

答案 0 :(得分:1)

只需下载ezvcard库并将其添加到项目中并使用以下功能读取vcf文件。我已经检查过它并且对我来说很好。

public void readVCF(){   
try{
        File file = new File(Environment.getExternalStorageDirectory()+"/temp.vcf");
        List<VCard> vcards = Ezvcard.parse(file).all();
        for (VCard vcard : vcards){
          System.out.println("Name: " + vcard.getFormattedName().getValue());
          System.out.println("Telephone numbers:");
          for (Telephone tel : vcard.getTelephoneNumbers()){
            System.out.println(tel.getTypes() + ": " + tel.getText());
          }
        }
    }catch(Exception e){e.printStackTrace();}}

答案 1 :(得分:0)

在外部库ez-vCard的帮助下,我能够解析vcf文件。但仍然无法使用任何Android内置API解析它。

    String backup_file_path = Environment.getExternalStorageDirectory().getPath() + "/contact_backup.vcf";
    File backup_file = new File(backup_file_path);

    List<VCard> vcard;
    try {
        vcard = Ezvcard.parse(backup_file).all();
        for (VCard vCard2 : vcard) {
            //System.out.println("Name: "+ vCard2.getFormattedName().getValue());
            //System.out.println("Email: "+ vCard2.getEmails().get(0).getValue());
            //System.out.println("Phone No: "+ vCard2.getTelephoneNumbers().get(0));

           //Get list of phone numbers
            List<Telephone> telePhoneNumbers = vCard2.getTelephoneNumbers();

            for (int i = 0; i < telePhoneNumbers.size(); i++) {
             System.out.println("Phone No: "+ telePhoneNumbers.get(i).getText());
            }
        }
    } catch (IOException e1) {
        e1.printStackTrace();
    }