2011-08-23 142 views
1

在下面的代码片段:getBestProvider可以返回null吗?

Criteria criteria = new Criteria(); 
Criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
criteria.setAltitudeRequired(false); 
criteria.setBearingRequired(false);   
criteria.setCostAllowed(true); 
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);   
String provider = DP.lm.getBestProvider(criteria, true); 

我试图保持的标准尽可能广泛得到任何可用的GPS位置提供的。即使那时没有任何东西可用,我也需要检测该案例。

这怎么处理?在这种情况下,getBestProvider调用是否会返回null?

回答

1

documentation说:

返回最符合给定条件的供应商的名称。 只有被允许通过调用 活动访问的提供商才会被退回。如果有多个供应商符合标准,则返回 精度最高的供应商。如果没有提供符合 标准,该标准被松开按以下顺序: 功率要求,准确,方位,速度,高度

注意,在货币成本的要求 在这个过程中不会被删除。

因此,仍然有可能找不到满足您所有要求的提供商。在这种情况下,返回null。这不在文档中,但我可以从我的个人经验中得到证实。

为了避免这种情况,如果getBestProvider方法返回null,则可以直接对Provider进行寻址。所以你有备份。

+0

有没有办法检测是否禁用了特定的GPS_LOCATION(通过设置>位置和安全性)? – rsman

相关问题