Я пишу приложение C# MAUI в .Net 8, и у меня возникли проблемы с добавлением BroadcastReceiver, поскольку его, очевидно, не существует ни в одном из имеющихся у меня пакетов. Я не смог найти подходящий пакет, который бы дал мне это.
Вот мои текущие пакеты:
<ItemGroup>
<PackageReference Include = "CommunityToolkit.Maui" Version = "9.0.0" />
<PackageReference Include = "CommunityToolkit.Mvvm" Version = "8.0.0" />
<PackageReference Include = "Microsoft.Toolkit.Uwp.Notifications" Version = "7.1.3" />
<PackageReference Include = "Newtonsoft.Json" Version = "13.0.3" />
<PackageReference Include = "Microsoft.Maui.Controls" Version = "8.0.40" />
<PackageReference Include = "Microsoft.Maui.Controls.Compatibility" Version = "8.0.40" />
<PackageReference Include = "Microsoft.Extensions.Logging.Debug" Version = "8.0.0" />
</ItemGroup>
Вот новый класс, который я пытаюсь создать.
namespace RemindMe.Services;
[BroadcastReceiver( Enabled = true )]
public class AlarmReceiver : BroadcastReceiver
{
}
Когда я выбираю «Быстрые действия и рефакторинг», мне не отображается возможность использовать какое-либо пространство имен, что обычно означает, что у меня нет пакета, содержащего этот класс.
Может кто-нибудь сказать мне, какой пакет использовать? Я все обыскал и не нашел. Я читал, что мне нужен Mono.Android, но не могу найти его в Nuget.
Спасибо
Да. Он находится в верхнем левом углу вкладки исходного файла. Но кроме того, я открыл проект, чтобы проверить это, увидел, что он там есть, а затем обнаружил, что могу указать ему использовать Android.Content, чего раньше никогда не случалось. Знаете, иногда VS просто не хочет работать, пока вдруг не начинает работать. Я не знаю, сделал ли я вчера что-то, что заставило его восстановиться, или оно само исправилось. Но спасибо! Это подсказало мне, в чем проблема, и я ценю это.





Комментарий пользователя 24884869 сделал свое дело! Мне нужно было выбрать правильный тип проекта для исходного кода.
Я очень рад помочь вам. Я обобщил ответ на этот вопрос:
Во всех версиях MAUI, Android Tools (JDK 11
и Android SDK 34) поддерживаются автоматически, поэтому вы можете использовать класс BroadcastReceiver непосредственно в файле .cs.
Поскольку этот класс не существует на платформах iOS и Windows, вам необходимо выбрать YourProject(net8.0-andorid) в качестве выбора платформы в верхнем левом углу VS или использовать код вызова платформы, чтобы использовать этот класс. .
Мой проект может напрямую использовать класс
BroadcastReceiverбез добавления другого пакета. Вы выбралиYourProject(net8.0-andorid)в качестве выбора платформы в верхнем левом углу VS?