Hallo Zusammen!
Jede App, die zum erstem mal den LocationSensor auf Active stellt, lößt ja eine Frage beim User aus,
ob die App den Ortungsdienst nutzen darf...
Was ist also, wenn der User NEIN tippt?
Weitere Aufrufen von LocationSensor.Active := true; können zwar aufgerufen werden, aber haben keinen Effekt!
Und jetzt...? Den Switch Disablen? Wie bekomme ich raus, dass der User "NEIN" getippt hat?
Ich hab da mal was vorbereitet...(Auszug aus unserer Library)
Delphi-Quellcode:
Function DDTCheckLocationAvail:boolean;
var
LSensorArray : TSensorArray;
LSensor : TCustomSensor;
CS : TCustomLocationSensor;
begin
{$IFDEF IOS}
result := false;
TSensorManager.Current.Activate();
try
LSensorArray := TSenSorManager.Current.GetSensorsByCategory(TSensorCategory.Location);
for LSensor
in LSensorArray
do
begin
CS := TCustomLocationSensor(LSensor);
if not CS.Started
then
CS.Start;
if TCustomLocationSensor.TProperty.Latitude
IN CS.AvailableProperties
then
Result := true;
CS.Stop;
end;
finally
// TSensorManager.Current.Deactivate; Soll man machen, lößt aber eine Exception aus...
end;
{$ELSE}
result := False;
{$ENDIF}
end;
Quick an Dirty... Bei mir Funktioniert es, wenn jemand ne bessere Idee hat, bin ich für Vorschläge offen.
Somit kann ich dem User die entsprechende Information geben...
Delphi-Quellcode:
procedure TGenMain.GPSSwitch(Sender: TObject);
begin
if GPS.IsChecked
then begin
if DDTCheckLocationAvail
then LocationSensor1.Active := true
else begin
ShowMessage('Sie haben den Ortungsdienst nicht gestattet!');
GPS.IsChecked := false;
end;
end
else begin
LocationSensor1.Active := false;
end;
end;
Grüsse Mavarik