gpt4 book ai didi

android - 如何在知道 Jnet_Uri 的情况下将文件加载到 Android 上的流中?

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:44 25 4
gpt4 key购买 nike

我正在使用 Delphi 10.3 Rio 编写一个 Android FMX 应用程序。我从图库中选择照片(通过 TJIntent.JavaClass.ACTION_OPEN_DOCUMENT)并取回 Jnet_Uri 条目。我可以使用它们来读取图像 EXIF(使用 TJExifInterface)。现在我还需要将这些图像加载到流中以进行进一步处理。我该怎么做?

当我尝试将 Jnet_Uri 转换为带有 uri.getPath 的路径时,结果类似于 /document/image:26591uri.toString 给我 content://com.android.providers.media.documents/document/image%3A26674TMemoryStream.LoadFromFile 无法从这两个路径加载:

Cannot open file "/document/image:26724". No such file or directory
Cannot open file "/content:/com.android.providers.media.documents/document/image%3A26724". Not a directory

因此问题来了,我如何知道 Jnet_Uri 才能将文件内容加载到流中?

最佳答案

我能够通过 JInputStream 读取数据:

var
uri: Jnet_Uri;
ms: TMemoryStream;
jis: JInputStream;
b: TJavaArray<Byte>;
begin
uri := .. some uri, alike "/document/image:26591"

ms := TMemoryStream.Create;

// Need to read via JInputStream, since Uri is not a file
jis := TAndroidHelper.Context.getContentResolver.openInputStream(uri);
b := TJavaArray<Byte>.Create(jis.available);
jis.read(b);
ms.Write(b.Data^, b.Length);
jis.close;

.. do something with Stream now

关于android - 如何在知道 Jnet_Uri 的情况下将文件加载到 Android 上的流中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55095694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com