Dies scheint der vorderste Thread für dieses Problem zu sein, daher wollte ich eine Lösung für meine C # -Kollegen hinzufügen. Ich habe mir den Kopf zerbrochen, um herauszufinden, was ich falsch gemacht habe, nachdem ich hier alles versucht hatte, ohne Erfolg. Ich habe endlich herausgefunden, was falsch war, und es unterscheidet sich ein wenig von den Ratschlägen hier für die C # Mono-Entwicklung. Im Grunde läuft es auf etwas hinaus, das ich gerade auf die harte Tour gelernt habe. Mit C # AndroidManifest.xml NICHT manuell ÄNDERN!
Weitere Informationen finden Sie in diesem Handbuch:
Xamarin: Arbeiten mit AndroidManifest.xml
Hier erfahren Sie, wie Sie dieses Problem direkter lösen können.
Zunächst gibt es in Ihren Projekteigenschaften auf der Registerkarte Manifest eine Kontrollkästchenliste zur Auswahl der Berechtigungen, die Sie bereitstellen möchten. Eine davon ist RECEIVE_BOOT_COMPLETED. Überprüfen Sie dies, um diese Berechtigungen bereitzustellen.
Zweitens müssen Sie die richtigen Tags in Ihre BroacastReceiver-Klasse einfügen.
[BroadcastReceiver]
[IntentFilter(new String[]{ Intent.ActionBootCompleted }, Priority = (int)IntentFilterPriority.LowPriority)]
public class MyBootReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
}
}
Der letzte Teil von [IntentFilter ()], der sich mit der Priorität befasst, ist nicht erforderlich. Er lässt lediglich andere Dinge mit höherer Priorität beim Booten zuerst erledigen und ist eine gute Vorgehensweise, wenn Ihre App keine hohe Priorität hat.
Wie Sie im verlinkten Artikel sehen werden, wird durch die Verwendung dieser Tags in Ihrem Code die Datei AndroidManifest.xml zum Zeitpunkt der Erstellung erstellt, und zwar so, wie es sein sollte. Was ich fand, war, dass das System beim manuellen Ändern des Manifests, um das Empfänger-Tag einzuschließen, veranlasste, dass es nach der Klasse eine Ebene zu tief suchte, wodurch eine ClassNotFound-Ausnahme ausgelöst wurde. Es wurde versucht, [Namespace]. [Namespace]. [BroadcastReceiver] zu instanziieren, was falsch war. Und das geschah aufgrund der manuellen Manifeständerungen.
Wie auch immer, hoffe das hilft.
Auch noch ein kurzer Tipp mit dem ADB-Tool. Wenn Sie eine besser lesbare Version des Protokolls erhalten möchten, versuchen Sie Folgendes:
C: \ Android \ platform-tools \ adb logcat >> C: \ log.txt
Dadurch wird der Logcat in eine Textdatei geschrieben, die Sie etwas einfacher öffnen und lesen können als im Eingabeaufforderungsfenster. Erleichtert auch das Ausschneiden und Einfügen von Dingen.