通过意图打开vCard

时间:2012-08-24 09:19:43

标签: android vcard

我想通过意图在Android联系人中打开vCard。 我有包含在字符串中的vCard:

BEGIN:VCARD
N:Zai;Alex;
TITLE:
TEL:7867843312346
ORG:Platinum tech
URL:http://google.com
EMAIL:
END:VCARD

我试着打开它:

String uri = adapter.getItem(position).getVcard().toString();
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_VIEW);   
i.setDataAndType(Uri.parse(adapter.getItem(position).getResult().toString()),"text/x-vcard");
startActivity(i);

但它与Log:

崩溃了

08-24 12:18:27.686:E / AndroidRuntime(11811):致命异常:主要 08-24 12:18:27.686:E / AndroidRuntime(11811):android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.intent.action.VIEW dat = BEGIN:VCARD

2 个答案:

答案 0 :(得分:0)

我相信uri应该指向一个文件uri Uri.parse将不知道如何解析您传递的vcard字符串。创建一个包含Vcard数据的文件,然后使用Uri.fromFile(file),然后在setDataAndType中使用此uri

答案 1 :(得分:0)

当您为意图设置数据时,它必须是正确的Uri,而不仅仅是您的vCard的Uri.parse。但不要害怕,因为可以将你的vCard放入Uri而无需创建文件。您可以使用Base64编码vCard(Android内置的方便,因此导入android.util.Base64)并将其作为Uri进行编码,如下所示:

i.setDataAndType(Uri.parse("data:text/x-vcard;base64," + Base64.encodeToString(theStringContainingYourVcard.getBytes()),"text/x-vcard");