Passando blob binário por um provedor de conteúdo

Eu tenho um provedor de conteúdo personalizado para o meu conjunto de aplicativos Android e uma das coisas que ele precisa expor é uma matriz de bytes pequena (20 a 30 KiB). O URI para esses blobs é semelhante a:

content://my.authority/blob/#

Onde# é o número da linha; o cursor resultante tem o padrão_id coluna e uma coluna de dados. Estou usando umMatrixCursor no fornecedorquery() método:

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

Mais tarde, no aplicativo que consome os dados, eu faço:

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

No entanto, os dados não contêm o conteúdo da minha matriz de bytes original; em vez disso, contém algo como[B@435cc518, que se parece mais com o endereço da matriz do que com o conteúdo. Tentei agrupar a matriz de bytes em uma implementação dejava.sql.Blob, imaginando que poderia estar procurando isso, já que o subsistema do provedor de conteúdo foi escrito para ser fácil de usar com o SQLite, mas não ajudou.

Alguém conseguiu fazer isso funcionar? Se os dados estavam no sistema de arquivos, existem métodos emContentProvider que eu poderia usar para fornecer um empacotadoInputStream para o cliente, mas os dados que estou tentando enviar retornam como recurso no APK do provedor de conteúdo.

questionAnswers(3)

yourAnswerToTheQuestion