Передача двоичного двоичного объекта через контент-провайдера

У меня есть провайдер контента, который настраивается для моего набора приложений Android, и одна из вещей, которую он должен предоставить, - это небольшой (20-30 КиБ) байтовый массив. URI для этих BLOB-объектов выглядит следующим образом:

content://my.authority/blob/#

где# номер строки; результирующий курсор имеет стандарт_id столбец и столбец данных. Я используюMatrixCursor в провайдереquery() метод:

byte[] byteData = getMyByteData();
MatrixCursor mc = new MatrixCursor(COLUMNS);
mc.addRow(new Object[] { id, byteData });

Позже, в приложении, потребляющем данные, я делаю:

Cursor c = managedQuery(uri, null, null, null, null);
c.moveToFirst();
byte[] data = c.getBlob(c.getColumnIndexOrThrow("data"));

Однако данные не содержат содержимого моего исходного байтового массива; скорее он содержит что-то вроде[B@435cc518, который больше похож на адрес массива, чем на содержимое. Я попытался обернуть массив байтов в реализацииjava.sql.Blobполагая, что он может искать это, поскольку подсистема поставщика контента написана так, чтобы ее было легко использовать с SQLite, но это не помогло.

Кто-нибудь получил это на работу? Если данные были в файловой системе, есть методы вContentProvider что я мог бы использовать для обеспечения маршалаInputStream клиенту, но данные, которые я пытаюсь отправить обратно, живут как ресурс в APK контент-провайдера.

Ответы на вопрос(3)

Ваш ответ на вопрос