В Android 7 getContentResolver().openAssetFileDescriptor(vCardUri, "r")
возвращает AssetFileDescriptor
, имеющий declaredLength, как -1, возвращаемый getDeclaredLength()
.В Android 7, метод-openAssetFileDescriptor ContentResolver (в vCardUri, "г") возвращает AssetFileDescriptor, имеющий declaredLength, как -1
Попытка экспорта контактов в виде vcards в файл vcf. Код, который я попробовал это следующим образом
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);
выше код работает отлично в Android 6 или below.But, когда бежал с помощью Android 7, Линия создания Byte [] результаты в NegativeByteArraySizeException
как declaredLength является -1. Когда я отлаживал загрузку источников Android 7, я наблюдал эту проблему. Любое здоровье будет действительно ощутимым.
попробовать 'GetLength()' – pskink
@pskink AssetFileDescriptor что я получаю оказывает длина собственность как -1.I пытался GetLength() и результат такой же, как предыдущий - NegativeByteArraySizeException –
тогда просто не использовать его: вместо того, чтобы читать ваши данные в петля – pskink