我想通过意图在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
答案 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");