2

我尝试编写一个应用程序,作为我的联系人和短信应用程序之间的层。这样我就可以在通过 vcard 共享联系人时为我的应用程序提供一个额外的选项。我的应用程序可以接收到意图。我通过以下方式获取内容:// uri

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() 打开 uri

Cursor c = getContentResolver().query(uri, null, null, null, null);

给我一个包含一行的游标 ???, firstname lastname.vcf, null

在哪里 ???是三个数字。

也许其他人有用于阅读此内容。

4

0 回答 0