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打勾!