![]() |
Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Hi,
ist irgendetwas an meiner Delphi 11 Installation krum oder warum taugt die bisherige RequestPermissions-Implementierung nicht mehr. Unter Delphi 10.4.2 funktioniert es unter Delphi 11 kommt die folgende Fehlermeldung: [DCC Fehler] E2250 Es gibt keine überladene Version von 'RequestPermissions', die man mit diesen Argumenten aufrufen kann
Delphi-Quellcode:
Ich hatte generell den Fehler gemacht, dass ich einige Delphi-Einstellungen via EMBT-Tool von 10.4.2 nach 11.0 gezogen habe, da musste ich im Nachhinein einiges reparieren, da so auch blind ganz viele Einträge mit 270 und sydney mitgezogen wurden (das hätte ich von der Funktion besser erwartet), daher kann ich nicht ausschließen, dass ich hier beim reparieren etwas kaputt gemacht habe.
procedure TicTrainerF.requestBLEPermissions();
begin if (requestedBLEPermissions) then exit; PermissionsService.RequestPermissions(['android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_FINE_LOCATION'], LocationPermissionRequestResult); end; procedure LocationPermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); var i: Integer; begin if ((length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted)) then begin log.d('User granted Location-Android-permission for BLE', True); requestedBLEPermissions:=True; end else begin log.d('Not all Location-Android-permission for BLE granted (' + IntToStr(length(AGrantResults)) + ')', True); for i:=0 to length(AGrantResults) - 1 do begin if (AGrantResults[i] = TPermissionStatus.Granted) then log.d(IntToStr(i) + ': granted', True) else log.d(IntToStr(i) + ': not granted', True) end; end; end; Die Signatur der Methode RequestPermissions hat sich nicht geändert, so weit bin ich schon mal. Grüße, Philipp |
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Wird evtl. LocationPermissionRequestResult aus einer anderen Unit gezogen, als auf das sich die Funktion bei der Deklaration bezieht.
Hatte ich auch schon bei Versionsupdate das Problem das sich Konstanten auf einmal in anderen Units befanden und dann andere Konstanten/Aufzählungen mit zufällig gleichen Namen gezogen wurden. |
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Delphi-Quellcode:
So sollte es funktionieren.
procedure TicTrainerF.requestBLEPermissions();
begin if (requestedBLEPermissions) then exit; PermissionsService.RequestPermissions(['android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_FINE_LOCATION'], LocationPermissionRequestResult); end; // Delphi 10.x //procedure LocationPermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); // Delphi 11 procedure LocationPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); var i: Integer; begin if ((length(AGrantResults) = 2) and (AGrantResults[0] = TPermissionStatus.Granted) and (AGrantResults[1] = TPermissionStatus.Granted)) then begin log.d('User granted Location-Android-permission for BLE', True); requestedBLEPermissions:=True; end else begin log.d('Not all Location-Android-permission for BLE granted (' + IntToStr(length(AGrantResults)) + ')', True); for i:=0 to length(AGrantResults) - 1 do begin if (AGrantResults[i] = TPermissionStatus.Granted) then log.d(IntToStr(i) + ': granted', True) else log.d(IntToStr(i) + ': not granted', True) end; end; end; |
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Danke, tut, was es soll.
|
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Zitat:
Delphi-Quellcode:
bei mir 3 Parameter. Im obigen Beispiel sehe ich nur 2 Parameter.
RequestPermissions
Was mache ich falsch? |
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Beim dritten Parameter gilt das gleiche, auch dort habe ich auf TClassicStringDynArray umgestellt:
Delphi-Quellcode:
PermissionsService.RequestPermissions([fPermissionCamera],CameraPermissionRequestResult, ExplainReason);
//neu: procedure CameraPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); procedure ExplainReason(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc); //alt: //procedure CameraPermissionRequestResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); //procedure ExplainReason(Sender: TObject; const APermissions: TArray<string>; const APostRationaleProc: TProc); |
AW: Android-RequestPermissions unter Delphi 11 (keine überladene Version)
Info: so ein ähnliches Problem hatte ich auch gerade, allerdings mit einem anderen Aufruf der Requestpermissions.
Dankenswerterweise hat EMBA die Demos angepasst, so dass ich da nachsehen konnte, wie ich den Aufruf verwenden muss, zu finden hier: C:\Users\Public\Documents\Embarcadero\Studio\22.0\ Samples\Object Pascal\Mobile Snippets\PhoneDialer\PhoneDialer.dproj |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz