LocationManager isProviderEnabled 方法在三星 Android 13 中始终返回 false?

问题描述 投票:0回答:1

我正在使用此代码来检查位置服务是否已启用

public static boolean isLocationsEnabled(Context context) {
LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
return lm.isProviderEnabled(LocationManager.GPS_PROVIDER) && lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}

如果返回 false,我会显示警报并使用 Activityresultlauncher 重定向到“位置设置”页面,如果启用了位置,则在回调中该方法返回 true,我继续获取位置 它也适用于 Android 12 设备,也适用于 Android 13 模拟器它可以工作,但在 Samsung A52 Android 13 中,即使启用位置后,它仍然返回 false。

locationmanager samsung-galaxy android-13
1个回答
0
投票

在三星 A7 等手机中,除了用于启用或禁用位置可访问性的开关之外,还有一个具有三种类型值的“位置方法”:

  1. 高精度
  2. 省电
  3. 仅限设备

其中只有第一个选项使用 GPS 模块。因此,如果您想在调用时获得真正的价值:

isProviderEnabled(LocationManager.GPS_PROVIDER)

您需要将定位方法更改为“高精度”,而不是“省电”或“仅设备”。请注意,“定位方法”选项可能并非在所有手机品牌中都可用,或者可能有不同的名称!

© www.soinside.com 2019 - 2024. All rights reserved.