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): 致命的な例外: メイン 08-24 12:18:27.686: E/AndroidRuntime(11811): android.content.ActivityNotFoundException: Intent を処理するアクティビティが見つかりません { act =android.intent.action.VIEW dat=BEGIN:VCARD

4

2 に答える 2

1

インテントに合わせてデータを設定するときは、vCard の Uri.parse だけでなく、適切な Uri である必要があります。ただし、ファイルを作成せずに vCard を Uri に入れることができるため、心配する必要はありません。vCard を Base64 (Android には便利に組み込まれているため、android.util.Base64 をインポートします) でエンコードし、次のように 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) を使用してから、この uri を setDataAndType で使用します。

于 2012-08-24T09:33:17.323 に答える