Получение настроек системы Android без какого-либо контекста
В служебном классе Android я хочу получить системное предпочтение в классе, но у меня нет контекста, потому что класс, который его вызывает, также не имеет контекста. Я обнаружил, что для ресурсов можно использовать статическую функцию Resources.getSystem()
. Есть ли аналогичный способ получения системных настроек без контекста?
Мой класс не является ни активным, ни сервисным. Это класс полезности. При необходимости может предоставить дополнительную информацию.
Ответы
Ответ 1
Вам нужно отправить Контекст - не пытайтесь убежать от своих обязанностей.:) Ваш класс утилит должен быть вызван действием или службой на каком-то уровне, и вы пройдете этот Контекст на всем протяжении линии, через каждый вызов метода. Я знаю, что это раздражает, мне пришлось делать подобные вещи сами. Подумайте, что это стимул, чтобы ваш код был прост и требовал как можно меньше вызовов методов, чтобы получить что-то.
Ответ 2
Я использую следующий Hack: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/
По сути, вы сбрасываете указатель контекста как статическую переменную внутри своей деятельности. Я бы рекомендовал этот уродливый взломать, если вы в сжатые сроки.
Кроме того, если вы пишете класс утилиты, вам, вероятно, потребуется (как и многие утилиты Android), чтобы вызывающее приложение предоставило вам контекст как часть вашего конструктора.
Ответ 3
Вы можете создать контекст:
Context myContext = createPackageContext("com.example", 0);