我正在用 Delphi 10.3 Rio编写一个Android FMX应用程序。在那里,我从图库中选择照片(通过TJIntent.JavaClass.ACTION_OPEN_DOCUMENT
)并取回Jnet_Uri
条目。我可以使用这些来读取图像EXIF(与TJExifInterface)。现在我还需要将这些图像加载到流中以进行进一步处理。我该怎么做?
当我尝试将Jnet_Uri转换为带有uri.getPath
的路径时,结果类似于/document/image:26591
。uri.toString
给了我content://com.android.providers.media.documents/document/image%3A26674
。TMemoryStream.LoadFromFile
无法从以下两个路径加载:
无法打开文件“/document/image:26724”。没有这样的文件或目录
无法打开文件“/content:/com.android.providers.media.documents/document/image%3A26724”。不是目录
因此,问题是,如何知道一个Jnet_Uri来将文件内容加载到流中?
2条答案
按热度按时间bnlyeluc1#
我可以通过JInputStream读取数据:
yyhrrdl82#
我使用以下代码通过内容uri作为TStream访问Android上的文件:
在 Delphi 11上测试,TipJavaContentResolverStream可以处理以ParcelFileDescriptor.AutoCloseInputStream打开的文件,我不知道TJIntent.JavaClass.ACTION_OPEN_DOCUMENT是否使用这个模型,试试看: