自动将 vcard 3.0 导入 Android 联系人 (Android 2.1)

发布于 2024-09-26 19:31:21 字数 103 浏览 7 评论 0原文

我正在尝试将 vcard(3.0 版)自动导入到 android 联系人中。 在联系人管理器中,有一个选项可以将存储在 sd 卡上的 vcf 文件导入到联系人中。如何通过移交文件来触发此功能?

I'm trying to import a vcard (vers. 3.0) automatically into the android contacts.
Within the contact manager there is an option to import a vcf file stored on the sd-card into the contacts. How can I trigger this function with handing over a file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぽ尐不点ル 2024-10-03 19:31:21

我在我的一个项目中使用了以下解决方案。效果非常好。作为 vCard 库,我使用了 cardme v.0.26,它也支持 vcard 3.0 版本。

注意:文件名存储在 res/values/strings.xml...

        /*
         * Create file. This file has to be readable, otherwise the contact
         * application cannot access the file via URI to read the vcard
         * string.
         */

// 该变量包含您的 vCard 作为字符串
字符串 vcardString;

        FileOutputStream fOut = openFileOutput(
                getResources().getText(R.string.app_vcard_file_name)
                        .toString(), MODE_WORLD_READABLE);
        osw = new OutputStreamWriter(fOut);
        // write vcard string to file
        osw.write(vcardString);
        // ensures that all buffered bytes are written
        osw.flush();
    } catch (NotFoundException e) {
        // ..
    } catch (IOException e) {
        // ...
    } finally {
        if (osw != null) {
            try {
                osw.close();
            } catch (IOException e) {
                // ...
            }
        }
    }
    // let the os handle the import of the vcard to the Contacts
    // application
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(Uri.parse("file://"
            + getFileStreamPath(
                    getResources().getText(R.string.app_vcard_file_name)
                            .toString()).getAbsolutePath()), "text/x-vcard");
    startActivity(i);

I used for one of my projects the following solution. It worked perfectly. As the vCard lib I used cardme v.0.26, which supports vcard version 3.0 as well.

note: file name is stored in res/values/strings.xml...

        /*
         * Create file. This file has to be readable, otherwise the contact
         * application cannot access the file via URI to read the vcard
         * string.
         */

// this var contains your vCard as a string
String vcardString;

        FileOutputStream fOut = openFileOutput(
                getResources().getText(R.string.app_vcard_file_name)
                        .toString(), MODE_WORLD_READABLE);
        osw = new OutputStreamWriter(fOut);
        // write vcard string to file
        osw.write(vcardString);
        // ensures that all buffered bytes are written
        osw.flush();
    } catch (NotFoundException e) {
        // ..
    } catch (IOException e) {
        // ...
    } finally {
        if (osw != null) {
            try {
                osw.close();
            } catch (IOException e) {
                // ...
            }
        }
    }
    // let the os handle the import of the vcard to the Contacts
    // application
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(Uri.parse("file://"
            + getFileStreamPath(
                    getResources().getText(R.string.app_vcard_file_name)
                            .toString()).getAbsolutePath()), "text/x-vcard");
    startActivity(i);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文