java - 如何导出vCard 3.0?

标签 java android contacts vcard

我已经设法获得vCard字符串,但是它们在2.1版本中。
现在的问题是我需要vCard 3.0才能使用API​​。
有没有容易达到我目标的方法?还是我需要手动编辑字符串?

我的代码:

private void getVcardString() {
    // TODO: 07.11.2017 Fix vCard Version
    vCardArray = new ArrayList<>();
    cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
            null, null, null);
    if (cursor != null && cursor.getCount() > 0) {
        cursor.moveToFirst();
        for (int i = 0; i < cursor.getCount(); i++) {

            String lookupKey = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
            Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
            AssetFileDescriptor fd;
            try {
                fd = this.getContentResolver().openAssetFileDescriptor(uri, "r");
                FileInputStream fis = fd.createInputStream();
                byte[] buf = new byte[(int) fd.getDeclaredLength()];
                fis.read(buf);
                String vCard = new String(buf);
                vCardArray.add(vCard);
                Log.println(Log.ASSERT, "Vcard", vCard);
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            cursor.moveToNext();
        }

    } else {
        Log.d("vCardERROR", "No Contacts in Your Phone");
    }

}

最佳答案

vCard 3.0要求模仿类型包含字符集,例如
Content-Type: text/vcard; charset=ISO-8859-1

尝试设置!可能有帮助

关于java - 如何导出vCard 3.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177861/

相关文章:

java - JvisualVM 中的采样器和探查器有什么区别?

java - JUnit 测试用例 - 设置数据

java - 在布局中重新分配时 JPanel 的存在

android - 将 GestureLibrary 与 ScrollView 一起使用

android - 如何将自定义属性传递给嵌套的 xml

android - 如何在 Android 中以最短时间加载所有联系人

ios - 请求权限以允许访问联系人 iOS

java - 我应该使用 Jain SIP (java) 中的哪些类来制作 SIP 客户端?

java - Android 在同一 Activity 中打开联系人列表

android - 如何从我的着色器代码中替换纹理中的颜色?