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

时间:2010-11-10 11:55:09

标签: android

我可以使用以下代码从.vcf文件中检索android中的所有联系人。

    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

3 个答案:

答案 0 :(得分:2)

如上所述,内置的VCFImportActivity烘焙到了android本身的代码中。我个人想通过意图从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 应该开始导入这些联系人。 [这是我头脑中的解决方案]

如果没有,请告诉我,让我看看你得到的调试错误。

答案 1 :(得分:-2)

我在Android中作为vCard导入联系人时遇到了很多困难,在花了很多时间之后,我没有用于导入联系人的公共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

答案 2 :(得分:-4)

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