Я искал способ отправить локальное сообщение в своем приложении и нашел руководство на веб-сайте Xamarin по широковещательным приемникам здесь, а точнее внизу веб-страницы, посвященной LocalBroadcastManager. Я следил за учебным пособием и несколько раз читал страницу, но мой класс BroadcastReceiver по-прежнему ничего не получает, когда я отправляю сообщение. Я ответил на множество вопросов, касающихся LocalBroadcastManager для Java, но не могу понять, чего не хватает для С#.
Это код, который запускает отправленное сообщение:
Intent intent = new Intent("dirty");
intent.PutExtra("dirtyAppCount", dirtyAppCount);
LocalBroadcastManager.GetInstance(Context).SendBroadcast(intent);
Здесь я регистрирую получателя в OnResume():
_dirtyMessageReceiver = new DirtyBroadcastReceiver();
RegisterReceiver(_dirtyMessageReceiver, new IntentFilter("dirty"));
Отмена регистрации приемника в OnPause():
UnregisterReceiver(_dirtyMessageReceiver);
И вот мой класс приемника:
[BroadcastReceiver(Enabled = true, Exported = false)]
public class DirtyBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
int dirtyAppCount = intent.GetIntExtra("dirtyAppCount", 0);
OnMessageReceived?.Invoke(this, new MessageArgs(dirtyAppCount));
}
}