Uncaught TypeError: Невозможно прочитать свойство 'forEach' из неопределенного - D3.js

Я попробовал решение с XXX, и хотя он действительно работал, в какой-то момент он переставал работать. onReceive больше не вызывали. Я часами пытался выяснить, что это может быть. Я понял, что Intent по какой-то загадочной причине больше не называется. Чтобы обойти это, я обнаружил, что вам действительно нужно указать действие для получателя в манифесте. Пример:

<receiver android:name=".Alarm" android:exported="true">
    <intent-filter>
        <action android:name="mypackage.START_ALARM" >
        </action>
    </intent-filter>
</receiver> 

Обратите внимание, что это имя ".Alarm" с периодом. В методе XXX setAlarm создайте Intent следующим образом:

Intent i = new Intent("mypackage.START_ALARM");

Сообщение START_ALARM может быть любым, каким вы хотите. Я просто дал это имя для демонстрационных целей.

Я не видел получателей, определенных в манифесте, без фильтра намерений, который определяет действие. Создавая их так, как указал XXX, он кажется вроде поддельным. Указав имя действия, Android будет вынужден создать экземпляр BroadcastReceiver, используя класс, соответствующий действию. Если вы полагаетесь на контекст, имейте в виду, что Android имеет несколько разных объектов, которые все называются контекстом и не могут привести к созданию вашего BroadcastReceiver. Принуждение Android к созданию экземпляра вашего класса с использованием только сообщения о действиях намного лучше, чем полагаться на некоторый контекст iffy, который может никогда не работать.

0
задан will 7 May 2019 в 20:59
поделиться