2012-08-24 3 views
2

인 텐트를 통해 안드로이드 연락처에서 vCard를 열고 싶습니다. 나는 그것을 열려고의도를 통해 vCard 열기

BEGIN:VCARD 
N:Zai;Alex; 
TITLE: 
TEL:7867843312346 
ORG:Platinum tech 
URL:http://google.com 
EMAIL: 
END:VCARD 

: 내가 문자열에 포함 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) : 치명적인 예외 : 주 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 (file)을 사용하고 setDataAndType에서이 uri를 사용하십시오.

+0

파일없이 .. –

+0

atleast 연락처 응용 프로그램의 코드는 파일 uri 이외의 다른 것을 사용하는 것을 지원하지 않습니다 – nandeesh

0

의도에 맞게 데이터를 설정하면 Uri.parse가 아니라 적절한 Uri이어야합니다. 귀하의 vCard. 파일을 만들지 않고도 vCard를 Uri에 넣을 수 있기 때문에 두려워 할 필요가 없습니다. 당신은 Base64로와 vCard를 인코딩 (안드로이드가 내장되어 편리를, 그래서 android.util.Base64를 가져)와 같이, 열린 우리당로 그에 풍덩 수 : 나는 그것을 해결하는 쉬운 방법이 있어야합니다 희망

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

이것은 실제로 깔끔한 해결책입니다. 그러나 Gmail과 같은 다른 응용 프로그램으로 보내고 싶다면 파일을 찾을 수 없으며 ' 우편물에 아무것도 붙이지 마라. –

+0

나를 위해 작동하지 .. .. ( –