Xamarin广播接收器没有收到
问题描述:
我有一个没有收到任何广播的BroadcastReceiver。Xamarin广播接收器没有收到
[BroadcastReceiver]
[IntentFilter(new[] { _broadcastId })]
public class CallBroadcaster : BroadcastReceiver, IAcceptCallService
{
const string _broadcastId = "headExtension.droid.services.AcceptIndividualCall";
public CallBroadcaster()
{
}
Activity CurrentActivity
{
get { return Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; }
}
public void Send()
{
var intent = new Intent(_broadcastId);
intent.PutExtra(Intent.ExtraText, "Accept");
intent.SetType("text/plain");
CurrentActivity.SendBroadcast(intent);
}
public override void OnReceive(Context context, Intent intent)
{
Console.WriteLine("Received");
}
}
OnReceive方法从来没有命中。我如何在xamarin中正确实现广播接收器?
这里只有一个项目,所以这不是从另一个项目接收意图的问题的重复。
答
我得到它的工作: 问题是与数据类型。意图以“text/plain”发送,IntentFilter接收的内容不匹配。
的解决方案是增加DataMimeType =“text/plain的”到意图滤波器如下:
[BroadcastReceiver]
[IntentFilter(new[] { _broadcastId }, DataMimeType="text/plain")]
public class CallBroadcaster : BroadcastReceiver, IAcceptCallService
{
const string _broadcastId = "headExtension.droid.services.AcceptIndividualCall";
public CallBroadcaster()
{
}
Activity CurrentActivity
{
get { return Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; }
}
public void Send()
{
var intent = new Intent(_broadcastId);
intent.PutExtra(Intent.ExtraText, "Accept");
intent.SetType("text/plain");
CurrentActivity.SendBroadcast(intent);
}
public override void OnReceive(Context context, Intent intent)
{
Console.WriteLine("Received");
}
}
请包括被触发广播的代码。 – matthewrdev
@matthewrdev在已经包含的代码中看到send函数 – trampster
@SushiHangover另外一个问题是关于从一个不同的项目来完成,我只有一个项目。而且答案也没有帮助。 – trampster