2012-08-24 35 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

不適用於我.. :( –

相關問題