我有一个内容提供程序,它是我的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