4

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

但它与日志崩溃:

08-24 12: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 数据=BEGIN:VCARD

4

2 回答 2

1

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

i.setDataAndType(Uri.parse("data:text/x-vcard;base64," + Base64.encodeToString(theStringContainingYourVcard.getBytes()),"text/x-vcard");
于 2013-07-11T14:08:11.070 回答
0

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

于 2012-08-24T09:33:17.323 回答