2012-08-24 32 views
2

我想通过intent在android联系人中打开电子名片。 我有名片其中包含字符串:通过intent打开电子名片

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); 

,但它与登录崩溃:

12月8日至24日:18:27.686:E/AndroidRuntime(11811):致命例外:main 08-24 12:18:27.686:E/AndroidRuntime(11811):android.content.ActivityNotFoundException:未找到处理Intent的活动{act = android.intent.action.VIEW dat = BEGIN:VCARD

回答

0

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

+0

我希望它必须解决更简单的方法它,没有文件.. –

+0

至少在联系人应用程序中的代码不支持使用除文件以外的其他任何东西 – nandeesh

0

当您为意图设置数据时,它必须是适当的Uri,而不仅仅是Uri.parse您的电子名片。但不要担心,因为可以将vCard放入Uri而不必创建文件。您可以编码使用Base64的电子名片(其中Android已经内置了方便,所以进口android.util.Base64)和放下,在作为开放的,就像这样:

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

这实际上是一个整洁的解决方案,但是,如果我想将它发送到另一个应用程序,如Gmail它说文件未找到,不要附加任何邮件。 –

+0

不适用于我.. :( –

相关问题