Hola Casimiro y Voci.
Aqui va una procion de codigo que e probado en Delphi Tpkyo, y Delphi Rio. En Delphi Tokyo finciona. En Delphi Rio, se cuelga. Los permisos los active manualmente desde telefono Android.
Código Delphi
[-]
...
...
var
vReader_Access: string;
vWrite_Access: string;
...
...
procedure TFConfigIP.FormCreate(Sender: TObject);
begin
vReader_Access := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
vWrite_Access := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
end;
procedure TFConfigIP.FormShow(Sender: TObject);
begin
if TOSVersion.Check(6) then
begin
PermissionsService.RequestPermissions([vReader_Access, vWrite_Access], LocationPermissionRequestResult);
end
end;
procedure TFConfigIP.LocationPermissionRequestResult(Sender: TObject;
const APermissions: TArray<string>;
const AGrantResults: TArray);
var
LocationPermissionGranted: Boolean;
sFile : String;
begin
sFile := SDCARD + 'Server.csv';
LocationPermissionGranted := (Length(AGrantResults) = 2) and
(AGrantResults[0] = TPermissionStatus.Granted) and
(AGrantResults[1] = TPermissionStatus.Granted);
if LocationPermissionGranted then begin
if (FileExists(sFile)) then begin
ShowMessage( 'Permiso concedido.');
CargaServer(sFile);
end
else begin
ShowMessage( sFile + ', no encontrado. lo crearemos.');
FTP_Server;
end;
end
else
ShowMessage( 'Permiso denegado.');
end;
procedure TFConfigIP.CargaServer(sFile: String);
var
f : System.TextFile;
j : String;
begin
AssignFile(f, sFile );
Reset(f);
while not SeekEof(f) do
begin
if SeekEoln(f) then
Readln;
Read( f, j );
j := Trim( j );
EdServer.Text := GetParam(j, ';'); EdCodigo.Text := GetParam(j, ';');
EdPasword.Text := GetParam(j, ';');
end;
CloseFile( f );
end;
Espero que este ejemplo sirva de algo, y, me puedan dar luces de que esta pasando.
Gracias.
Saludos.
Jose Miguel.