在Android设备上打开位于共享网络驱动器上的图像文件

rryofs0p  于 2023-05-27  发布在  Android
关注(0)|答案(1)|浏览(308)

我有一个网络驱动器设置,其中包含.jpg图像文件的目录,我希望能够加载到Timage组件中。我正在从数据库字段中加载图片名称。下面是它应该完成这一点的过程。

procedure TForm1.ShowPicture;
var
  fn: string;
begin
  BitMapPath := '\\DRIVE-ABC\Pictures\';
  qryPictures.Open;
  qryPictures.First;
  if not(qryPictures.FindField('Picture').IsNull) then
  begin
    fn := BitMapPath + qryPictures.FieldByName('Picture').AsString;
    TDialogService.ShowMessage(fn);
    imgPart.Bitmap.LoadFromFile(fn);
  end;
end;

当TDialogService.ShowMessage(fn)执行时,它显示文件路径是正确的

\\DRIVE-ABC\Pictures\123456.jpg

但是当.LoadFromFile(fn)行执行时,我得到一个错误,说明...

Cannot open file "/\\DRIVE-ABC\Pictures\123456.jpg". Not a directory.

此错误只发生在我从我的Android平板电脑运行程序时,如果我编译程序作为Windows x32在我的桌面上运行,那么它检索文件没有问题.
现在我认为问题可能在于两个地方之一:
1.当我通常从另一台计算机访问这个驱动器时,我必须输入我的登录凭据。也许它无法访问驱动器,因为它无法验证设备?我该怎么做?
1.在该错误中,似乎在我的地址字符串的开头添加了一个正斜杠。我的意思是,这肯定会使地址不正确,但我不知道为什么它会在.LoadFromFile执行时添加这个地址,也不知道如何阻止它这样做。
请救救我!

n3schb8v

n3schb8v1#

这通常是通过Intent来完成的。这是一个指针在那个图标中。
DEPLHI - Trying to get EXIF data on library images in Android
Android喜欢带有itnent的URI,它有一个非常临时的令牌来允许访问它。
Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);

相关问题