Delphi 10.3.1拍照遇到的问题
procedure TAddOrderCamera.CameraActionExecute(Sender: TObject); var Service: IFMXCameraService; Params: TParamsPhotoQuery; begin if TPlatformServices.Current.SupportsPlatformService(IFMXCameraService, Service) then begin Params.Editable := False; //拍完照是否允许编辑 // Specifies whether to save a picture to device Photo Library Params.NeedSaveToAlbum := False; //是否保存到系统相册 Params.RequiredResolution := TSize.Create(2000, 2000);//拍照大小,每张照片有固定宽高比例,系统会自动处理,给它一个想要的大约值就行。 Params.OnDidFinishTaking :=Self.CameraActionDidFinishTaking;//拍完照后触发的事件 Service.TakePhoto(nil, Params);//打开相机,开始拍照 end else ShowMessage('设备不支持拍照.'); end;
上面的代码,在10.3.1下出错。但是,同样的调用方式在另外一个app中,则没有问题。跟踪确定,问题出在Service.TakePhoto(nil,Pararms)这一句上。
两个项目使用的AndroidManifest.xml文件是一样的。
解决方法:打开Project Options窗口,如下图,Secure File Sharing打勾!
参考QC地址:https://quality.embarcadero.com/browse/RSP-22870
如果这一项不好用,则需要你重新安装10.3.1,具体原因可以参考:https://quality.embarcadero.com/browse/RSP-24067
以保证IDE生成正确的AndroidManifest.xml文件。
2019-07-11后记:
不用重装IDE,直接修改AndroidManifest.xml,增加一句:
<%provider%>
当然,前掉是Secure File Sharing打勾!