2014-11-06 60 views
0

有没有办法以编程方式解析联系VCF文件?如何以编程方式解析联系.vcf文件?

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

+0

看看它https://code.google.com/p/ez-vcard/ – 2014-11-06 10:21:20

+0

@NaveenTamrakar感谢:-)!没有使用任何外部库是不可能读取它的。 – 2014-11-06 10:32:50

+0

http://stackoverflow.com/questions/672704/where-to-find-a-java-library-to-read-vcard-files。用外部库解析它并没有什么坏处。 – Darpan 2014-11-06 10:53:31

回答

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(); 
    } 
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();}} 
相关问题