我的应用请求位置更新,“minTime”设置为2秒。当“移动数据”开启(在手机的设置中)并启用GPS时,应用程序使用“移动数据”,每小时5到10兆字节。这被记录在ICS“数据使用”屏幕中,作为“Android OS”的使用。
为了防止出现这种情况,我提供了未经批准的设置 - >“位置服务” - >“Google的位置服务”。这是指辅助GPS,还是更多的东西?无论是什么,它似乎对我的应用程序的互联网访问没有任何影响。
进一步确认是我的应用程序导致移动数据访问的GPS使用情况,我观察到状态栏上的互联网数据活动指示器显示当且仅当GPS指示符存在时的活动。
阻止此移动数据使用的唯一方法似乎是关闭“移动数据”,如果没有移动数据的支持,GPS准确性似乎几乎一样好。但是,关闭移动数据显然不能令人满意。
Manifest中唯一的权限是“android.permission.ACCESS_FINE_LOCATION”(和“android.permission.WRITE_EXTERNAL_STORAGE”),因此该应用没有明确的权限来使用互联网数据。
LocationManager代码是
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setSpeedRequired(false);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(true);
criteria.setCostAllowed(false);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
bestProvider = lm.getBestProvider(criteria, true);
if (bestProvider != null) {
lm.requestLocationUpdates(bestProvider, gpsMinTime, gpsMinDistance, this);
reference for LocationManager.getBestProvider说
如果没有提供者符合标准,则放宽标准......请注意,在此过程中不会删除货币成本要求。
然而,尽管将setCostAllowed设置为false,但app仍会产生潜在的金钱成本。
我还可以做些什么来阻止该应用使用移动数据?
答案 0 :(得分:0)
网络提供商通常包括各种非gps定位技术,例如AGPS,wifi和小区三角测量,或它们的任意组合。在某些设备上,它们是分开的。您还可以添加被动提供程序,它使用存储在其他应用程序中的位置。
无论如何,如果你不想使用internet / 3g,你需要在应用程序或最终用户中禁用此功能。
对于最终用户,默认情况下此功能处于关闭状态,如果他选择启用它,则会向他发出警告(而不是默认启用它的iphone)。