繁体   English   中英

Delphi Firemonkey同时从库中选择多张图片

[英]Delphi Firemonkey select multiple pictures from gallery at the same time

我需要在我的Android应用程序中创建一个功能,允许用户打开手机图库,一次选择多张图片,然后将选定的图片保存在我的本地数据库中。 我需要的是使用Android Intent获取所选图片(文件名和路径)的方法。 希望你能理解我的问题。

我正在使用此代码:

if TPlatformServices.Current.SupportsPlatformService(IFMXTakenImageService,
  IInterface(ImageService)) then
begin
  Params.RequiredResolution := TSize.Create(640, 640);
  Params.OnDidFinishTaking := DoDidFinish;
  ImageService.TakeImageFromLibrary(SpeedButton2, Params);
end;

procedure TfGallery.DoDidFinish(Image: TBitmap);
begin
 Image1.Bitmap.Assign(Image);
end;

不幸的是,此代码可以从图库中返回一次图像。

编辑 - 根据Nick Cardoso的答案,以下代码适用于问题的第一部分:

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
intent.setType(StringToJString('image/*'));
intent.setAction(TjIntent.JavaClass.ACTION_GET_CONTENT);
Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE,true);
LaunchActivity(Intent);

上面的代码用于选择多张图片。 现在我很难找到一个解决方案来回复(在回调函数中)Delphi中的选定文件!

我将从免责声明开始- 我不写Delphi 你的问题是我第一次听说Firemonkey,我希望大多数Android开发者都能做到这一点(因此回答率很低)。

我的理解是,幕后Firemonkey会触发普通的Android Intents与标准组件进行交互。 这意味着如果我们可以将意图切换到返回多个图像的意图,我们就有了解决方案。

如果您只定位Android 18及更高版本,则只需将EXTRA_ALLOW_MULTIPLE额外添加到现有照片选择器Intent即可。 使用纯Android,就像添加以下内容并回读剪辑数据一样简单(如本答案中所述 ):

pickerIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE);

如果您要定位较旧的Android版本,则可以在项目中包含类似这一个 (或其中一个 )的自定义库,并使用新意图定位该活动。

我的研究表明,Firemonkey允许自定义操作 ,您必须自己研究如何实现自定义操作 ,因为您将更好地理解您阅读的代码。

然而, 这篇文章似乎需要阅读 )向我展示了可以创建自己的Intent,这意味着您的初始操作中的代码将与此类似(如果您可以找到当前TakeImageFromLibrary操作的来源,您可以基于代码):

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_PICK);
//OR Intent := TJIntent.JavaClass.init(StringToJString('com.some.library.client.SOME_ACTION'));
Intent.putExtra(TJIntent.JavaClass.EXTRA_ALLOW_MULTIPLE);
LaunchActivity(Intent);

附加说明:在库中选择多个的默认行为是长按

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM