Я создаю файл .VCF для резервного копирования контактов. Процесс создания и вставки данных завершился неудачно из-за метода FileDescriptor's
getDeclaredLength
, который возвращает размер -1
для длины vCard-URI
, полученной из метода ContentResolver's
openAssetFileDiscritor
.
Это точно такой же вопрос, как и , заданный здесь Балакришной Авулапати . но единственная проблема для того, чтобы задать тот же вопрос здесь, заключается в том, что предложенное решение мне немного трудно понять. которые не решают мою проблему. Комментарий @ pskink в решении вышеуказанной ссылки может быть полезен, но я не могу найти полный исходный код, так как в комментарии есть только 1 строка.
Я использую текущий код,
Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
AssetFileDescriptor fd = resolver.openAssetFileDescriptor(uri, "r");
FileInputStream fis = fd.createInputStream();
byte[] b = new byte[(int)fd.getDeclaredLength()];
fis.read(b);
Пожалуйста, дайте доброе предложение. Спасибо:)