我正在尝试将所有联系人都设为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文件.
看看https://code.google.com/p/android-vcard/可读取和写入VCard
总结以上是内存溢出为你收集整理的在Android中将所有联系人作为vcard获取全部内容,希望文章能够帮你解决在Android中将所有联系人作为vcard获取所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)