由于Criteria为null,我有以下代码崩溃。
由于某种原因,String best为null。有什么想法吗?
private void startGPS() {
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
String best = locationManager.getBestProvider(criteria, true);
Log.v(DEBUG_TAG, "Best provider: " + best);
locationManager.requestLocationUpdates(best, 50, 0, this);
}
答案 0 :(得分:1)
getBestProvider(criteria, true)
只会返回启用的提供商。由于您要求Criteria.ACCURACY_FINE
,您应该获得GPS,但如果没有启用,您将获得null
。
答案 1 :(得分:1)
来自文档:
“只有被调用活动允许访问的提供者才会被返回。如果多个提供者符合标准,则返回具有最佳准确度的提供者。如果没有提供者符合标准,则以下标准将被放宽序列[...]“
这意味着如果标准过于严格,那么搜索下一个最佳标准。因此,如果未启用任何提供程序,或者您没有访问提供程序的权限,则将返回null。
检查您的清单。同时使用false参数检查getProviders();的结果,以查看哪些提供商可用。