Rufst du die Berechtigungen denn beim Start ab? In aktuellen Android Versionen muss man diese explizit anfragen, wenn sie benötigt werden. Früher wurden diese bei der Installation abgefragt, was heute nicht mehr passiert.
Ich habe das per IFDEF meistens so gemacht, dass es unter Windows und Android identisch funktioniert, nur dass unter Android die Berechtigungen abgefragt werden. Sprich als Pseudocode:
Delphi-Quellcode:
procedure TXXX.FormActivate...
begin
if FAlreadyActivated then
Exit;
FAlreadyActivated := True;
{$IFDEF ANDROID}
PermissionsService.RequestPermissions...
end;
procedure TXXX.RequestPermissionsResult...
begin
StatusLabel.Text := 'Überprüfe Rechte...';
if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
begin
StatusLabel.Text := 'Lade App...';
{$ENDIF}
TThread.CreateAnonymousThread...
end;
Auf die Weise werden unter Android die Rechte angefordert und die weitere Initialisierung im Callback RequestPermissionsResult ausgeführt, während unter Windows die Initialisierung direkt im FormActivate passiert.