当添加意图时,Android联系人数据不整齐

时间:2019-04-30 22:18:18

标签: android encoding android-contacts

我有一个意图,可以在android上打开创建联系人屏幕。当我尝试添加带有希伯来语字符的联系人时,“创建联系人”屏幕上的租约人会显示为问号(????)

我尝试将名称编码为utf-8,但我没有解决问题,而是将其显示为%X字符,而不是希伯来语

这是我的尝试:

  Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
                intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
                try {
                    intent.putExtra(ContactsContract.Intents.Insert.NAME, new String(vcard.getName().getBytes("ISO-8859-1"), "utf-8"));
                    intent.putExtra(ContactsContract.Intents.Insert.PHONE, vcard.getPhoneNumber()).putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, 0);
                    intent.putExtra(ContactsContract.Intents.Insert.EMAIL, vcard.getEmail()).putExtra(ContactsContract.Intents.Insert.EMAIL_TYPE, 0);
                    intent.putExtra(ContactsContract.Intents.Insert.COMPANY, vcard.getCompany());
                    intent.putExtra(ContactsContract.Intents.Insert.JOB_TITLE, vcard.getTitle());
                    startActivity(intent);
                }catch(UnsupportedEncodingException e){
                    e.printStackTrace();
                }

所有包含希伯来字母的字段当前都显示为“ ????”我在网上找不到解决方案时遇到了麻烦,但我做的不合适。

谢谢

1 个答案:

答案 0 :(得分:0)

不确定vcard的实现方式,但我假设vcard.getName()返回一个字符串。

您在这里的意思是:取字符串名称,转换ISO-8859-1,然后将解释为{{1 }}。

这通常是可行的:

utf-8

如果它不起作用,请尝试以下操作:

intent.putExtra(ContactsContract.Intents.Insert.NAME, vcard.getName());