在安卓系统中通过程序创建vCard文件

3
我正在使用以下代码读取联系人并创建vCard文件。
            String lookupKey = cur.getString(cur.getColumnIndex(Contacts.LOOKUP_KEY));
            Uri uri=Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);


            try {
                fd = cr.openAssetFileDescriptor(uri, "r");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }       
            try {
                fis = fd.createInputStream();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            byte[] buf = new byte[(int)fd.getDeclaredLength()];
            try {
                if (0 < fis.read(buf))
                {
                    vCard = new String(buf);
                    writer.write(vCard);
                    writer.write("\n");
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

但是在查看联系人列表时,我遇到了以下错误:

ERROR/MemoryFile(284): MemoryFile.finalize() called while ashmem still open.

我的生成的 .vcf 文件缺少一些联系人,并且没有正确结束。

请问有人能告诉我我的代码哪里出了问题吗?


大家好。有人知道如何摆脱这个错误吗??? - AnilV
我该如何提升这个请求的优先级?有人可以向我推荐其他论坛来回答这个问题吗? - AnilV
2个回答

1

你需要关闭流 fis

        try {
            fis = fd.createInputStream();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        byte[] buf = new byte[(int)fd.getDeclaredLength()];
        try {
            if (0 < fis.read(buf))
            {
                vCard = new String(buf);
                writer.write(vCard);
                writer.write("\n");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Close stream
        fis.close();

在写完所有记录后,也请关闭写入器。 - png

0

我曾经遇到过同样的问题。我使用了一个开源的android-vcard jar包将联系人写入vcard。


你能给我提供一些链接,其中包含你使用的jar文件的描述吗? - AnilV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接