我在xamarin.android中的广播接收器有问题。无法正常工作。
我的应用中有通知正在运行,我想在收到通知后更改应用中的某些内容(例如Toast消息或更改按钮的图标),但是它不起作用。我不知道自己在做什么错,也找不到解决方案,因为所有主题都与Java有关。当用户收到通知时,我需要触发某些事件,事件或广播接收器,然后我要在MainActivity中进行一些操作。
所以,这是代码。
BroadcastReceiver类:
[BroadcastReceiver(Enabled = true, Exported = false)]
public class MyMessageReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
bool messageReceived = intent.GetBooleanExtra("messageReceived", false);
}
}
OnMessageReceived方法:
{
base.OnMessageReceived(message);
SendNotification(message.GetNotification().Body);
LocalBroadcastManager broadcaster = LocalBroadcastManager.GetInstance(this);
Intent intent = new Intent("message");
intent.PutExtra("messageReceived", true);
broadcaster.SendBroadcast(intent);
}
以及OnResume和OnPause方法:
protected override void OnResume()
{
base.OnResume();
LocalBroadcastManager.GetInstance(this).RegisterReceiver(myReceiver, new IntentFilter("message"));
RegisterReceiver(myReceiver, new IntentFilter("message"));
}
protected override void OnPause()
{
base.OnPause();
LocalBroadcastManager.GetInstance(this).UnregisterReceiver(myReceiver);
}
例如,我不知道如何在MainActivity的OnCreate方法中接收该信息?我尝试过
messageReceived = Intent.GetBooleanExtra("messageReceived", false);
if (messageReceived)
{
Toast.MakeText(this, "new notification", ToastLength.Long).Show();
}
但这不起作用,messageReceived为空。
答案 0 :(得分:0)
我知道为时已晚,但总比没有好:
分析了Firebase消息传递之后,我为此目的做了一个适当的解决方法:
当您的应用程序在后台运行时,默认情况下,在收到推送通知时会调用handle intent方法:
public override void HandleIntent(Intent p0)
{
base.HandleIntent(intent);
//Your code to know that you received a notification (backgrounnd)
// Use shared preference for this
}
不知道如何使用共享首选项检查this。
有关句柄意图如何工作的更多信息,请查看我的答案here。
当应用程序处于前台时,您可以简单地使用消息接收方法,例如:
public override void OnMessageReceived(Context context, Intent intent)
{
//Your code to know that you received a notification (backgrounnd)
// Use shared preference for this
}
然后,无论何时需要使用它,都可以使用共享首选项获得标志或计数或任何其他内容。
如有任何查询,请还原!