android vcard监听,在Android中将所有联系人作为vcard获取

我正在尝试将所有联系人都设为vCard.

这是我的代码:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ContentResolver cr = getContentResolver();

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,

null, null, null, null);

if (cur.getCount() > 0) {

//cur.moveToFirst();

while (cur.moveToNext()) {

try{

String lookupKey =

cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));

Uri uri =

Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI,

lookupKey);

AssetFileDescriptor fd =

this.getContentResolver().openAssetFileDescriptor(uri, "r");

FileInputStream fis = fd.createInputStream();

byte[] buf = new byte[(int)fd.getDeclaredLength()];

if (0 < fis.read(buf))

{

String vCard = new String(buf);

System.out.println("The vCard value is " + vCard);

}

fis.close();

}

catch(Exception e)

{

System.out.println(e.getStackTrace());

}

}

}

cur.close();

System.out.println(cur.getCount());

}

}

这给了我几乎所有的联系方式,但是它不返回某些包含特殊字符的联系方式,在葡萄牙语中我们说“mãe”(妈妈),并且此代码无法识别它.其他所有类似“António”的名称都没有出现.

我在这个问题上停留了很长时间.

解决方法:

获取VCard的最佳方法是编写自己的函数来创建VCard.如果Contacts不是英语,则您使用的方法会出现问题.

手动获取联系人的所有字段并将其写入您的VCard文件.

标签:vcard,android-contacts,android

来源: https://codeday.me/bug/20191202/2084725.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值