1

我的应用程序请求将“minTime”设置为 2 秒的位置更新。当“移动数据”打开(在手机设置中)并启用 GPS 时,应用程序以每小时 5 到 10 兆字节的速度使用“移动数据”。这在 ICS“数据使用”屏幕中记录为“Android OS”的使用情况。

为了防止这种情况发生,我取消了设置->“定位服务”->“谷歌的定位服务”。这是指辅助 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);

LocationManager.getBestProvider的参考说

如果没有提供者符合标准,则放宽标准……请注意,在此过程中并未删除对货币成本的要求。

然而,尽管将 setCostAllowed 设置为 false,应用程序仍然会产生潜在的货币成本。

我还能做些什么来阻止应用程序使用移动数据?

4

1 回答 1

0

网络提供商通常包括各种非gps定位技术,如AGPS、wifi和小区三角测量,或它们的任意组合。在某些设备上,它们是分开的。您还可以添加被动提供程序,它使用存储在其他应用程序上的位置。

无论如何,如果您不想使用 internet/3g,您需要在应用程序或最终用户中禁用此功能。

对于最终用户,此功能默认关闭,如果他选择启用它,他会收到警告(与默认启用的 iphone 不同)。

于 2012-09-09T22:37:02.080 回答