Получение системных настроек Android без какого-либо контекста

в классе утилиты Android я хочу получить системное значение предпочтения в классе, но у меня нет контекста, потому что класс, который вызывает его, также не имеет контекста. Я обнаружил, что для ресурсов можно использовать static . Есть ли аналогичный способ получения системных настроек без контекста?

мой класс не является ни деятельностью, ни службой. Это служебный класс. Может дать больше информации, если нужно.

3 ответов


вы должны отправить ему Контекст - не пытайтесь убежать от своих обязанностей. :) Ваш служебный класс должен быть вызван действием или службой на каком-то уровне, и вы собираетесь пройти этот контекст по всей линии, через каждый вызов метода. Я знаю, это раздражает, мне приходилось делать подобные вещи самому. Считайте, что это стимул, чтобы ваш код был простым и требовал как можно меньше вызовов методов для достижения чего-то.


Я использую следующий хак: http://www.hasemanonmobile.com/2009/10/05/quick-and-very-dirty-android-development-trick/

по существу вы прячете указатель контекста как статическую переменную внутри вашей деятельности. Я бы рекомендовал этот уродливый хак, Если у вас сжатые сроки.

кроме того, если вы пишете класс утилиты, вам, вероятно, потребуется (как и многие утилиты Android), чтобы вызывающее приложение предоставило вам контекст, как часть вашего конструктора.


вы можете создать контекст:

Context myContext = createPackageContext("com.example", 0);