FileNotFoundException при попытке преобразовать контакты в Vcard - PullRequest
5 голосов
/ 31 марта 2010

Я пытаюсь преобразовать контакты на эмуляторе в формат VCard, используя код ниже

AssetFileDescriptor afd = openAssetFileDescriptor (Contacts.CONTENT_VCARD_URI, "r")

Трассировка стека говорит java.io.FileNotFoundException Нет файла с содержимым: //com.android.contacts/contacts/as_vcard

Нужно ли прикреплять файл к URI? Есть ли другой способ конвертировать Контакты в Vcard в Android?

Ответы [ 2 ]

2 голосов
/ 26 мая 2010

Вы должны перебрать контактную базу данных и вызвать openAssetFileDescriptor () для каждого из них в отдельности. Важной частью является то, что вы должны использовать ключ поиска для каждого контакта и добавлять его к CONTENT_VCARD_URI, используя метод URI.withAppendedPath ().

1 голос
/ 20 мая 2011

Я тоже споткнулся с этим тоже. Вот способ сделать это. 1-й пользователь может выбрать свой контакт или получить контакт другим способом.

После того, как у вас есть контакт, вы ищите ключ поиска, после чего вы можете получить vcard. Вот код, который я использовал после того, как получил contactUri (вид вставки из разных функций, но должен работать).

Cursor cursor = resolver.query(contactUri, new String[] {
    Contacts.LOOKUP_KEY
}, null, null, null);
FileInputStream input = null;

try {
    if (cursor.moveToFirst()) {
        return cursor.getString(0);
    } else return;

    AssetFileDescriptor afd = context.getContentResolver().openAssetFileDescriptor(
            Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookupKey), "r");
    input = afd.createInputStream();

    int ch;
    StringBuffer strContent = new StringBuffer("");
    while ((ch = input.read()) != -1)
        strContent.append((char) ch);

    Log.d(TAG, strContent.toString());
} finally {
    cursor.close();
    if (input != null) {
        input.close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...