使用SettingsClient和startResolutionForResult将省电位置模式更改为“高精度”

时间:2019-04-22 14:51:26

标签: android android-location

我正在使用基于位置的应用程序。为了启用位置,我将这种(example1example2)方法与用户的位置设置对话框结合使用。但我注意到一件有趣的事情。如果用户设置了省电模式(“安全性和位置>位置>模式”),然后该应用程序将使用.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);创建用于位置请求的位置设置对话框,并且用户选择“确定”-onActivityResult()中的结果将为RESULT_CANCELED并且定位模式将仅更改为设备,而不会更改为高精度。

我在具有不同Android版本的不同手机上进行了测试,但结果是相同的。我也在不同的应用程序上测试了这个东西。看起来Google Maps应用程序正确处理了这种情况,省电模式后将其更改为“高精度”(在点击“我的位置”图标并在位置设置对话框中选择确定后)。

是否可以通过设置对话框将省电模式更改为高精度?我知道我可以在RESULT_CANCELED之后使用以下代码(例如here)打开“位置设置”活动:

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 1);

并在onActivityResult()中检查是否启用了网络和gps提供程序。但是看起来Google Maps应用程序可以处理它,而无需执行其他操作。

0 个答案:

没有答案