В следующем фрагменте кода:
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 в таком случае?
В документации указано, что:
Возвращает имя поставщика, который наилучшим образом соответствует заданным критериям. Возвращаются только поставщики, которым разрешен доступ к вызывающей деятельности. Если несколько поставщиков отвечают критериям, возвращается лучшая точность. Если ни один из поставщиков не соответствует критериям, критерии ослабляются в следующей последовательности: требования к мощности, точность, несущая способность, скорость, высота
Обратите внимание, что требование о денежной стоимости не устраняется в этом процессе.
Таким образом, все еще возможно, что вы не можете найти поставщика, который удовлетворяет всем вашим требованиям. В этом случае возвращается null. Это не в документации, но я могу это исправить из своего личного опыта.
Чтобы этого избежать, вы можете обратиться к поставщику напрямую, если метод getBestProvider возвращает значение null. Таким образом, у вас есть резервная копия.