当前位置: 首页 > 面试题库 >

通过内容提供者传递二进制Blob

高胜
2023-03-14
问题内容

我有一个针对我的Android应用程序集定制的内容提供程序,它需要公开的内容之一是一个较小的(20-30 KiB)字节数组。这些Blob的URI如下所示:

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中的资源。


问题答案:

您将无法使用MatrixCursor发送字节数组。这是因为它取决于AbstractCursor#fillWindow填充CursorWindowusing的方法Object#toString。因此,正在发生的事情是toString正在调用字节数组方法,并且存储该方法而不是您想要的字节数组内容。我能看到的唯一方法是实现自己的游标,该游标将CursorWindow适当地填充字节数组。



 类似资料:
  • 我创建了一个桶,名为,并分配了指向该桶的DNS记录。网站(桶的内容)可在上获得。 现在我需要它通过HTTPS提供服务。 我已创建负载均衡器 带有“backend bucket”,它是指向bucket的pointint。选中“启用云CDN”选项。 带有“主机和路径规则”选项: 主机:`app.example.com 路径: 后端:指向“后端桶” 不过,内容是通过http提供的,如果我试图使用http

  • 我正在用< code>Jetty服务器运行一个Spring Boot应用程序。API由< code>Jersey servlet提供服务。静态内容放在< code>src/main/static和< code > src/main/private-static 中。 问题#1未提供中的静态内容 中的内容是公开的,可以自由访问。据此:https://docs.spring.io/spring-boo

  • 问题内容: 在XML文档中的系统之间发送二进制内容的最佳方法是什么 我知道Base64和Hex,真正的区别是什么。我当前正在使用Base64,但为此需要包括一个外部公共库,就像使用HEX一样,我想我可以创建一个函数。 问题答案: 您也可以为Base64编写自己的方法…但是我通常建议同时使用外部的,经过良好测试的库。(这并不意味着它们短缺。) Base64和十六进制之间的区别实际上只是字节的表示方式

  • 通常,从图库中选择一个视频并用库剪切,问题是我需要将剪切的视频(它存储在外部存储器:/storage/emulated/0/test_video.mp4中)转换为base64,这就是它失败的地方。我该怎么解决呢?我已经将权限放在清单上,并以编程方式请求这些权限。 而我在logcast中得到的只有:

  • 我已经为运行在localhost上的节点服务器创建了一个反向代理,以便可以通过HTTPS提供服务。 然而,当应用程序试图发出请求时,我会得到: 内容混合:“HTTPS://foo.com/”的页面通过HTTPS加载,但请求了不安全的XMLHttpRequestendpoint“http://localhost:8888/graphql?query=%7bnotifications(userid)%

  • 问题内容: 我正在尝试使用Gorilla工具包的软件包来路由Go Web服务器中的URL,我有以下Go代码: 目录结构为: 像这样引用Javascript和CSS文件: 当我在Web浏览器中访问内容时,内容已成功交付,但是,所有和URL都返回404。 如何获得程序以将文件提供到子目录之外? 问题答案: 我想您可能正在寻找…