Hola Kurono.
modifique manualmente el arcchivo XML, pero este es reescrito por delphi al compilar la aplicacion. (no funciono).
Aprovecho a comentarles que encontre este codigo en: C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Mobile Snippets\AccessCameraApp
Código Delphi
[-]
unit uMain;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.Permissions,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, System.Actions,
FMX.ActnList, FMX.StdActns, FMX.MediaLibrary.Actions, FMX.Objects, FMX.Graphics,
FMX.Controls.Presentation;
type
TAccessCameraAppForm = class(TForm)
private const
PermissionCamera = 'android.permission.CAMERA';
PermissionReadExternalStorage = 'android.permission.READ_EXTERNAL_STORAGE';
PermissionWriteExternalStorage = 'android.permission.WRITE_EXTERNAL_STORAGE';
private
procedure DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
procedure TakePicturePermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray);
published var
alGetFromCamera: TActionList;
TakePhotoFromCameraAction1: TTakePhotoFromCameraAction;
imgCameraImage: TImage;
ToolBar1: TToolBar;
btnTakePhoto: TButton;
Label1: TLabel;
published
procedure TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
procedure btnTakePhotoClick(Sender: TObject);
end;
implementation
uses
FMX.DialogService;
{$R *.fmx}
{$R *.LgXhdpiPh.fmx ANDROID}
procedure TAccessCameraAppForm.DisplayRationale(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc);
begin
var RationaleMsg: string;
for var I := 0 to High(APermissions) do
begin
if APermissions[i] = PermissionCamera then
RationaleMsg := RationaleMsg + 'The app needs to access the camera to take a photo' + SLineBreak + SLineBreak
else if APermissions[i] = PermissionReadExternalStorage then
RationaleMsg := RationaleMsg + 'The app needs to read a photo file from your device';
end;
TDialogService.ShowMessage(RationaleMsg,
procedure(const AResult: TModalResult)
begin
APostRationaleProc;
end)
end;
procedure TAccessCameraAppForm.btnTakePhotoClick(Sender: TObject);
begin
PermissionsService.RequestPermissions([PermissionCamera, PermissionReadExternalStorage, PermissionWriteExternalStorage], TakePicturePermissionRequestResult, DisplayRationale)
end;
procedure TAccessCameraAppForm.TakePicturePermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray);
begin
if (Length(AGrantResults) = 3) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted) and (AGrantResults[2] = TPermissionStatus.Granted) then
TakePhotoFromCameraAction1.Execute
else
TDialogService.ShowMessage('Cannot take a photo because the required permissions are not all granted')
end;
procedure TAccessCameraAppForm.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
imgCameraImage.Bitmap.Assign(Image);
end;
end.
Lo compile, luego lo instale en mi android 10. La aplicacion funciono. Me presento un mensaje donde me pedia permisos para acceder a la camara del dispositivo. Le di aceptar. Luego me presento un mensaje, solicitando permiso para acceder a mis fotos. Le di aceptar a esta ultima peticion, y la aplicacion se colgo. Ya no funciono mas. La reinicie. La volvi a ejecutar, y lo mismo. Cada vez que li di permiso para acceder a mis fotos, la aplicacion se colgo. Entonces claramente hay un problema de manejo de permisos, que ni con una aplicacion desarrollada por embarcadero funciona.
Alguna idea.
Saludos.
Jose Miguel.