我尝试编写一个应用程序,作为我的联系人和短信应用程序之间的一个层。 因此,当通过vcard共享conatct时,我为我的应用程序获得了额外的选项。 我的应用程序收到了意图。 我得到了内容:// uri by
Uri uri = (Uri) getIntent().getExtras().get(Intent.EXTRA_STREAM);
我可以使用以下内容获取AssetFileDescriptor:
AssetFileDescriptor afd = getContentResolver().openAssetFileDescriptor(uri, "r");
没问题。同样打开文件:
InputStream is = afd.createInputStream();
byte[] buffer = new byte[(int)afd.getDeclaredLength()];
is.read(buffer);
但是这个文件只包含“[”和十六进制字符串。我认为它应该考虑实际的vcard文件? 因为我做了
buffer.toString();
而不是
new String(buffer);
没有正确转换utf-8编码的字节,愚蠢的愚蠢的8小时错误....
尝试使用query()
打开uriCursor c = getContentResolver().query(uri, null, null, null, null);
给我一个包含一行的游标 ???,firstname lastname.vcf,null
在哪里???是三个数字。
也许其他人可以用它来读这个。