从Android 2.1中的.vcf文件导入联系人

问题描述:

我能够使用以下代码从.vcf文件中的android中检索所有联系人。从Android 2.1中的.vcf文件导入联系人

ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); 
         Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey); 
         System.out.println("The value is " + cr.getType(uri)); 
         AssetFileDescriptor fd = this.getContentResolver().openAssetFileDescriptor(uri, "r"); 
         FileInputStream fis = fd.createInputStream(); 

我不知道如何使用这个.vcf文件来使用代码导入所有这些联系人。 .vcf文件中包含的所有联系人,包括照片等

干杯, Prateek

+0

hi prateek jain ... howz u? prateek我也做同样的工作,因为你完成意味着我想在设备中的所有联系人.vcf文件在一个单一的.vcf文件..但问题是,我能够导出后只遍历整个光标一个联系人..那么如何制作所有联系人的单个.vcf文件?我也可以分享代码给你...请帮助...和+1也用于帮助我的问题.. :) – shyam 2012-02-21 12:32:54

我终于实现了联系人导入的所有细节。解决方案是从Android源代码中提取所有相关文件,并进行一些更改,它将起作用。 :-)

+0

愿意分享哪些文件和有什么变化? – 2011-03-04 01:11:11

+0

请参考我下面的回复。您需要使用pim - > vcard文件夹中的所有文件。 – 2011-03-04 07:17:32

+0

@PrateekJain:请在这里分享你的代码。 – pratik 2012-05-01 12:44:31

我在为Android导入联系人作为电子名片挣扎了很多,花了很多时间后,我来到没有公共的API用于导入联系人。

我所知道的唯一方法就是重用Android的源代码。我通过重用Android 2.1源代码实现了同样的目标。

该文件可以从

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/pim/vcard/exception/VCardException.java/

被称为在右边的探险家,你会发现PIM文件夹下所需的所有文件。将负责启动该程序的文件是ImportVCardActivity.java

我希望它可以帮助!

干杯,Prateek

+0

小心分享您的代码? – 2012-03-14 14:11:55

如上所述,有一个内置在VCFImportActivity中烘烤,以机器人本身的代码。我个人想通过意向从Gmail应用程序打开一个无法识别的vcf文件。我会发送一个附加到我的程序,然后将启动联系人应用程序的VCF数据的意图。 如果您在保存上述VCF文件到SD卡的根目录下(或其它地方的通讯录应用程序保存其出口VCFS),然后开始像这样的活动:

Uri stuff = getIntent().getData(); 
Intent i = new Intent(android.content.Intent.ACTION_VIEW, stuff); 
i.setType("text/x-vcard"); 
startActivity(i); 

如果应用程序在启动触点导入它在该目录中看到的任何vcf。很显然,在启动此代码段之前保存该vcf文件,启动联系人应用程序(通过可能会出现的选择器),等等! Android SHOULD开始导入这些联系人。 [这是一个解决我的头顶]

如果不这样做,让我知道,让我看看你得到什么样的调试错误。

+0

导入所有android源代码通常是在android上做错事的方法。意图是你如何通过Android中的其他应用完成任务。这是一种烘焙到android的功能,以便像我们这样的开发人员可以“获取”我们通常无法访问的内容。要么因为代码是专有的,要么功能是特权的。如果您创建一个意图,形成与您想要使用的应用程序可以识别的相同类型,并且您没有为该意图设置默认应用程序,那么您想使用的应用程序将是一个选择它的选项当这个意图启动时。 – tjborromeo 2013-03-15 18:44:12