由于null Criteria导致Android崩溃

时间:2011-10-11 13:18:42

标签: android

由于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);

}

2 个答案:

答案 0 :(得分:1)

getBestProvider(criteria, true)只会返回启用的提供商。由于您要求Criteria.ACCURACY_FINE,您应该获得GPS,但如果没有启用,您将获得null

答案 1 :(得分:1)

来自文档:

“只有被调用活动允许访问的提供者才会被返回。如果多个提供者符合标准,则返回具有最佳准确度的提供者。如果没有提供者符合标准,则以下标准将被放宽序列[...]“

这意味着如果标准过于严格,那么搜索下一个最佳标准。因此,如果未启用任何提供程序,或者您没有访问提供程序的权限,则将返回null。

检查您的清单。同时使用false参数检查getProviders();的结果,以查看哪些提供商可用。