相关疑难解决方法(0)

通过内容提供程序传递二进制blob

我有一个内容提供程序,它是我的Android应用程序集自定义的,它需要公开的一个东西是一个小的(20-30 KiB)字节数组.这些blob的URI如下所示:

content://my.authority/blob/#
Run Code Online (Sandbox Code Playgroud)

#行号在哪里; 生成的游标具有标准_id列和数据列.我MatrixCursor在提供者的query()方法中使用a :

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

后来,在使用数据的应用程序中,我做:

Cursor c = managedQuery(uri, null, null, null, null);
c.moveToFirst();
byte[] data = c.getBlob(c.getColumnIndexOrThrow("data"));
Run Code Online (Sandbox Code Playgroud)

但是,数据不包含原始字节数组的内容; 相反,它包含类似的内容[B@435cc518,它看起来更像是数组的地址而不是内容.我尝试将字节数组包装在一个实现中java.sql.Blob,认为它可能正在寻找,因为内容提供者子系统被编写为易于与SQLite一起使用,但它没有帮助.

有没有人得到这个工作?如果数据是在文件系统中,也有方法ContentProvider,我可以用它来提供编组InputStream到客户端,但数据我想回送生活作为内容提供者的APK资源.

java android android-contentprovider android-cursor matrixcursor

8
推荐指数
2
解决办法
3586
查看次数