Это, кажется, приоритетная тема для этой проблемы, поэтому я хотел добавить решение для моих коллег по C #. Я ломал голову, пытаясь понять, что я делаю неправильно, попробовав все здесь, но безрезультатно. Я, наконец, выяснил, что было не так, и это немного отличается от совета по разработке C # Mono. По сути, это сводится к тому, что я только что выучил трудным путем. С C # НЕ МОДИФИЦИРУЙТЕ AndroidManifest.xml вручную!
См. Это руководство для справки:
Xamarin: Работа с AndroidManifest.xml
Более подробно об этой проблеме, вот как вы это делаете.
Во-первых, в свойствах вашего проекта на вкладке «Манифест» есть список флажков для выбора разрешений, которые вы хотите предоставить, одним из которых является RECEIVE_BOOT_COMPLETED. Проверьте это, чтобы предоставить эти разрешения.
Во-вторых, вам нужно поместить соответствующие теги в ваш класс BroacastReceiver.
[BroadcastReceiver]
[IntentFilter(new String[]{ Intent.ActionBootCompleted }, Priority = (int)IntentFilterPriority.LowPriority)]
public class MyBootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
// Do your boot work here, set alarms, show toasts, whatever
}
}
Заключительная часть [IntentFilter ()], касающаяся приоритета, не требуется, она просто позволяет другим высокоприоритетным вещам выполняться в первую очередь при загрузке и является хорошей практикой, если ваше приложение не является высокоприоритетным. *
Как вы увидите в связанной статье, использование этих тегов в вашем коде приведет к тому, что файл AndroidManifest.xml будет создан во время сборки, и все будет так, как должно быть. Я обнаружил, что при изменении манифеста вручную для включения тега получателя система заставляла его искать класс на один уровень слишком глубоко, вызывая исключение ClassNotFound. Он пытался создать экземпляр [Пространство имен]. [Пространство имен]. [BroadcastReceiver], что было неверным. И это происходило из-за ручного редактирования манифеста.
В любом случае, надеюсь, это поможет.
Также еще один быстрый совет с помощью инструмента adb. Если вы хотите получить более легкую для чтения версию журнала, попробуйте это:
C: \ Android \ platform-tools \ adb logcat >> C: \ log.txt
Это приведет к выводу logcat в текстовый файл, который вы можете открыть и прочитать немного проще, чем в окне командной строки. Также немного облегчает процесс вырезания и вставки.