2011-10-11 86 views
0

由于条件为空,我有以下代码崩溃。由于空标准导致Android崩溃

由于某些原因,字符串最好为空。任何想法为什么?

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

+0

是的,谢谢你傻我,我没有得到我的清单正确的许可,所以它不断崩溃,因为这一点。 –

+0

您能否提供您所需的权限?我面临同样的问题。 – Pallavi

+0

权限如下:\t \t

1

从文档:被允许由调用活动访问将返回

“只有供应商如果有几个供应商符合标准,则返回一个最好的准确性如果没有供应商满足。标准按照以下顺序排列:[...]“

这意味着如果标准太严格,则搜索下一个最佳标准。如果没有提供者被启用,或者如果你没有访问提供者的权限,那么将返回null。

检查您的清单。还请检查getProviders();的结果并使用false参数,以查看哪些提供程序可用。