我对 TLocationSensor 有一个有趣的问题。如果启动我的应用程序之前在Android菜单中的位置,传感器工作正常。我捕捉事件 OnLocationChange 。但如果我不允许Android菜单中的位置并启动应用程序然后允许在Android菜单传感器中的位置没有开始工作!
未调用事件 OnLocationChange 。
在这种情况下设置 LocationSensor1.Active:= true; 无效。
或者我的应用程序启动后如何自动允许位置?
我使用Delphi XE10.1 Berlin和Android 6.0
答案 0 :(得分:0)
今天也发生了同样的问题。在我的情况下,手动设置应用程序权限可以完成工作
答案 1 :(得分:0)
对于最近的 android 版本,有必要在运行时请求权限(在启动时或在需要时可能更好)。
{$IFDEF ANDROID}
uses
System.Permissions,
Androidapi.JNI.OS;
PermissionsService.RequestPermissions([
JStringToString(TJManifest_permission.JavaClass.ACCESS_COARSE_LOCATION),
JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION)],
procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
begin
if (Length(AGrantResults) <> 2)
or (AGrantResults[0] <> TPermissionStatus.Granted)
or (AGrantResults[1] <> TPermissionStatus.Granted) then
Log('Location permissions not granted');
end);
{$ENDIF}
当然,这两个权限也必须在项目选项中勾选,但这已经是默认设置了。