Как получить системную службу AlarmManager в Xamarin.Android

#c# #android #xamarin #alarmmanager

#c# #Android #xamarin #alarmmanager

Вопрос:

Я пытаюсь настроить чрезвычайно простое приложение для Android, которое будет отправлять всплывающее сообщение по расписанию (даже если приложение больше не запущено). После проведения некоторых исследований похоже, что класс AlarmManager может обрабатывать эту функциональность. Проблема, с которой я сталкиваюсь, заключается в том, что я просто не могу получить экземпляр класса AlarmManager. Я просмотрел, вероятно, 30 разных примеров, и все они получают экземпляр AlarmManager одним и тем же способом. Однако, когда я пытаюсь сделать то же самое, я получаю сообщение об ошибке «AlarmManager — это пространство имен, но используется как тип».

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

 AlarmManager alarmManager = (AlarmManager) Context.GetSystemService (Context.AlarmService);
  

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

Ответ №1:

Не уверен, что такое ваш «контекст», но я предполагаю, что вы пытаетесь получить к нему доступ через статическое свойство, поскольку вы также используете Context.AlarmService в той же строке кода и GetSystemService доступно через экземпляр context.

Вы можете использовать контекст Application или Activity для доступа GetSystemService :

Пример:

 var alarmManager = (AlarmManager) Android.App.Application.Context.GetSystemService (Context.AlarmService);
  

Комментарии:

1. Спасибо за ваше предложение! Я попробовал это, и у меня все еще возникает та же проблема. Независимо от того, в какой конфигурации я пытаюсь получить доступ к AlarmManager, я сразу получаю ту же ошибку. Как только AlarmManager вводится, IntelliSense выдает мне сообщение об ошибке, что это пространство имен, используемое как тип.

2. @Nickel45 Вы назвали что-то еще AlarmManager (т. Е. содержит ли это ваше пространство имен? … xxxxxx.AlarmManager ?)

3. Ладно, это ОЧЕНЬ неловко, но сам мой проект назывался AlarmManager, и именно поэтому я получал ошибку. Самая большая в мире ладонь. Большое спасибо за помощь!