Android get vCard data from Intent

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

I use Intent.ACTION_SEND for receiving data in my app. How can I process sending of data type text/x-vcard?

When I use intent.getStringExtra(Intent.EXTRA_TEXT), it's throws an exception.

回答1:

This worked for me:

Uri uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM); 

uri.toString() gave me this:

content://com.android.contacts/contacts/as_multi_vcard/2876r7-2A962A902A9045494F35.1957ifcf79ef7e82a0b99%3A2876r8-315551534945354F312D4F35.1957ieb4f1a6b0fcb82b9%3A2876r9-57493D3135452D3D43.1957ief585d48b64784c0%3A2876r10-4F35373D4343474959.1957if0a70009608fae23%3A2876r11-313B3531412F2D432D473135.1957i39c8fd1b6ef69e84%3A1957i51f47cecc7822f19.4035i611323cd8d55aa13%3A4035i8.4035i74aa09b30a019fa1%3A4035i2c0b359c8a47878e%3A4035i6d3c40138feef64b%3A4035i7d583f5488e47e41%3A4035ia6.4035i5%3A4035i6029e050898a86d3%3A4035i77caf53c89b4da48%3A4035i2a11745a8f3d5667%3A4035i9%3A4035i59ab32fd0fa955a9%3A4035i7391f1908a38ed1b%3A4035i6769848b08a214b0%3A4035i5a7c03c88bd1ba9e%3A4035i126427da8dfc0763%3A4035i35003ea5093abeb0%3A4035i1906758a8e16ca3a%3A4035i59a7953d883a78bf%3A4035i64249c098820452a%3A4035i48145af48ed78ebc%3A4035i2093d7568be9dff6%3A4035i469c62120db59d35.4035i388017020fbfb07e%3A4035i47e19c048aa116d7%3A239i3%3A239i2%3A239i249%3A239i248%3A239i1, 

which is not terribly useful in that form, but there seem to be several posts on stack about getting a usable path from a URI.

To get the text from the vcard, the following seems to be working for me:

ContentResolver cr = getContentResolver(); InputStream stream = null; try {     stream = cr.openInputStream(uri); } catch (FileNotFoundException e) {     // TODO Auto-generated catch block     e.printStackTrace(); }  StringBuffer fileContent = new StringBuffer(""); int ch; try {     while( (ch = stream.read()) != -1)       fileContent.append((char)ch); } catch (IOException e) {     // TODO Auto-generated catch block     e.printStackTrace(); } String data = new String(fileContent); Log.i("TAG", "data: " + data); 

The string will have carriage returns, so to see all of the text in the logcat, make sure to search for the tag (in the above code it's "TAG"), so you see all the lines (see my screenshot below).



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!