Android 默认接受";“提高定位精度”;更新Google play服务时弹出[ROOT]

Android 默认接受";“提高定位精度”;更新Google play服务时弹出[ROOT],android,gps,google-play-services,fusedlocationproviderapi,android-fusedlocation,Android,Gps,Google Play Services,Fusedlocationproviderapi,Android Fusedlocation,我有一个应用程序,安装在出租车司机用来跟踪位置和驾驶距离的电话中。(手机已根目录,我们对手机拥有所有权限)。在应用程序的第一个实现中,我们使用LocationManager.RequestLocationUpdate从GPS和网络提供商处获取位置更新。由于我们需要捕获驾驶室行驶的每一公里,我们在位置设置中启用了“高精度”模式 出于两个原因,我们愿意选择融合位置提供商 出于某种原因(android中的一个已知错误:)网络提供商没有提供位置更新 由于某些原因,设备突然失去GPS定位,并且在设备重新启

我有一个应用程序,安装在出租车司机用来跟踪位置和驾驶距离的电话中。(手机已根目录,我们对手机拥有所有权限)。在应用程序的第一个实现中,我们使用LocationManager.RequestLocationUpdate从GPS和网络提供商处获取位置更新。由于我们需要捕获驾驶室行驶的每一公里,我们在位置设置中启用了“高精度”模式

出于两个原因,我们愿意选择融合位置提供商

  • 出于某种原因(android中的一个已知错误:)网络提供商没有提供位置更新
  • 由于某些原因,设备突然失去GPS定位,并且在设备重新启动之前无法再次获得
  • 我们发现FusedLocationProvider提供了更好的结果,并计划将我们的应用程序更改为使用FusedLocationProvider。现在的问题是-我们的设备有一个旧版本的GooglePlayServices,它没有LocationServices。我们有两个选择

  • 使用LocationRequest和LocationClient使用旧版本的FusedLocationProvider。虽然它在室外(这是我们的主要要求)效果很好,但即使启用wifi并具有良好的网络信号(这似乎也是一个已知的问题),我们在室内也没有得到位置更新(根本没有)因此,我怀疑Google PlayServices和/或FusedLocationProvider的旧版本中可能存在一些bug,这些bug会在以后的版本中修复

  • 在所有手机上更新GooglePlayServices(通过无线安装apk)并使用LocationServices以高精度作为优先级获取位置更新。此实现即使在室内也会提供位置更新,这正是我们所期望的——这里的问题是,当我使用apk更新GooglePlayServices时,当我在应用程序中请求位置更新时,会打开两个弹出窗口,其中一个请求确认以改进位置另一个是启用google应用程序使用我的位置的功能。即使我不接受第二个弹出窗口,它也可以正常工作,但如果我不接受第一个弹出窗口,它会将位置设置更改为“仅设备”模式(这意味着只使用GPS提供商)

  • 我们不能期望我们的所有驱动程序在显示弹出窗口时都接受它。我想知道是否有任何方法可以对第一个弹出窗口执行“默认接受”之类的操作,以便我的设备保持在“高精度”模式

    我找到了一个禁用位置许可的解决方案,当在“位置设置”中手动启用高精度模式时,该解决方案就会出现。该解决方案适用于我们的旧应用程序,但在更新的GooglePlayServices中它不起作用


    实现这一点的任何方法——如在设备外壳中执行命令、发出意图或修改GooglePlayServices apk本身,我都可以接受。

    在根设备上,您可以通过编程方式在初始化使用位置服务之前设置以下值来抢占这些对话框

    su
    的形式运行以下命令:

    content insert --uri content://com.google.settings/partner --bind name:s:network_location_opt_in --bind value:i:1
    content insert --uri content://com.google.settings/partner --bind name:s:use_location_for_services --bind value:i:1
    content insert --uri content://settings/global --bind name:s:assisted_gps_enabled --bind value:i:1
    content insert --uri content://settings/secure --bind name:s:allowed_geolocation_origins --bind value:s:'http://www.google.co.uk http://www.google.com'
    

    我也有同样的问题。如果你找到了任何解决方案,请分享。@NasserMansouri没有找到正确的解决方案,但由于我们所有的手机都是相同品牌和型号的,弹出窗口出现在相同的位置。因此,我们在(x,y)处模拟触摸通过adb shell命令定位复选框。如果是这种情况,您可以尝试。