Контактные данные Android являются бессмысленными при добавлении через намерение - PullRequest
0 голосов
/ 01 мая 2019

У меня есть намерение, которое открывает экран создания контакта на 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 голосов
/ 01 мая 2019

Не знаю, как реализовано vcard, но я предполагаю, что vcard.getName() возвращает строку.

То, что вы здесь делаете, это как сказать: возьмите строковое имя, конвертируйте в ISO-8859-1, а затем интерпретируйте эти байты как utf-8.

Обычно это работает:

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

Если это не сработает, попробуйте это:

intent.putExtra(ContactsContract.Intents.Insert.NAME, new String(vcard.getName().getBytes("UTF-8"), "UTF-8"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...