У меня есть следующий код, который оценивается как true в эмуляторе (ОС 2.3.3), когда «приложения> настройки> разработка> разрешить фиктивные местоположения» не отмечены.Я ожидаю, что метод вернет false, но он вернет true.
public static boolean isMockLocationSet(Context context) {
if (Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) == 0) {
return false;
}
else {
return true;
}
}
Следующее изменение возвращает false, как и ожидалось (кстати, что лучше .equals или .ContentEquals?):
public static boolean isMockLocationSet(Context context) {
if (Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0")) { //.contentEquals("0")
return false;
}
else {
return true;
}
}
Я предпочитаю первый пример, потому что он должен допускать случаи, когда может существовать нулевое значение, присваивая значение по умолчанию 0 и все еще разрешая выполнение логики без сбоев (на самом деле, я подозреваю, что этот случай может существовать, но не доказал это -Например, производитель реализует Android без всех этих установленных настроек (то есть некоторые, такие как Allow Mock Locations, начнут свою жизнь с нуля) ... ожидая, пока пользователь не проверит настройку, прежде чем записать 1 (или 0, когда не проверено) в таблицу).
Так в чем проблема?Ну, из сообщений об ошибках я чувствую, что разные устройства обрабатывают эту проверку по-разному, но не имеют доступа ко всем типам устройств, я ищу рекомендации о том, как обрабатывать в общем / лучше.Кроме того, почему первый пример не работает?