My BroadcastReceiver ничего не получает. Скорее всего, моя настройка неправильная, потому что я не смог найти никаких хороших примеров. Мне нужен мой приемник, чтобы получить что-то в моей MainActivity и изменить вид. У меня почти такой же код в Android-проекте, и здесь он работает, однако BroadcastReceivers, похоже, немного отличается по-разному в Xamarin (в Android я могу сделать новый BroadcastReceiver почти как объект, но в Xamarin или C# , мне кажется, что я должен сделать свой собственный класс и, следовательно, не иметь одинаковых возможностей напрямую ссылаться на представления). Если я получу это для работы, я отправлю полный рабочий пример для всех тоже.BroadcastReceiver не принимает широковещательные сообщения
Вот как я попытался установить его:
[Activity(Label = "GetLocation.Droid", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
Button button;
protected override void OnCreate(Bundle bundle)
{
// ... various OnCreate() code
LocationBroadcastReciever lbr = new LocationBroadcastReciever();
RegisterReceiver(lbr, new IntentFilter("test"));
}
public void SetButtonText(string text)
{
button.Text = text;
}
}
[BroadcastReceiver]
public class LocationBroadcastReciever : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
/* My program never get this far, so I have not been able
to confirm if the bellow code works or not (its from
another example I saw). */
//EDIT: It does NOT work. See my answer for a working example
string text = intent.GetStringExtra("title");
((MainActivity)context).SetButtonText(text);
InvokeAbortBroadcast();
}
}
И в моем IntentService у меня есть этот метод, который на самом деле работает, но никогда не приходит на мой приемник.
private void SendBroadcast(double lat, double lng, string activity)
{
Intent intent = new Intent("test");
intent.PutExtra("title", "Updated");
LocalBroadcastManager.GetInstance(this).SendBroadcast(intent);
}
Это в значительной степени тот же код, как у меня в рабочем Android (только подправили BroadcastReceiver и незначительные изменения, чтобы сделать его компиляции).
Может ли кто-нибудь увидеть, что не так ???
EDIT Наконец-то получил все это для работы. Вы можете увидеть мой ответ на полный, чистый пример.
Спасибо! Я не знал о местных и глобальных, а также пропускал IntentFilter на BroadcastReceiver, как предлагалось оба ответа. – mathkid91
@ mathkid91, вы можете найти это сообщение интересным: http://codetheory.in/android-broadcast-receivers/ – g4s8