Pasar blob binario a través de un proveedor de contenido

Tengo un proveedor de contenido personalizado para mi conjunto de aplicaciones de Android, y una de las cosas que necesita exponer es una pequeña matriz de bytes (20-30 KiB). El URI para estos blobs se ve así:

content://my.authority/blob/#

dónde# es el número de fila; el cursor resultante tiene el estándar_id columna y una columna de datos. Estoy usando unMatrixCursor en el proveedorquery() método:

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

Más tarde, en la aplicación que consume los datos, hago:

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

Sin embargo, los datos no contienen el contenido de mi matriz de bytes original; más bien, contiene algo como[B@435cc518, que se parece más a la dirección de la matriz que a los contenidos. Intenté envolver la matriz de bytes en una implementación dejava.sql.Blob, pensando que podría estar buscando eso ya que el subsistema del proveedor de contenido fue escrito para ser fácil de usar con SQLite, pero no ayudó.

¿Alguien ha conseguido que esto funcione? Si los datos estaban en el sistema de archivos, hay métodos enContentProvider que podría usar para proporcionar un comisarioInputStream al cliente, pero los datos que estoy tratando de enviar vuelven a vivir como un recurso en el APK del proveedor de contenido.

Respuestas a la pregunta(3)

Su respuesta a la pregunta