小编Pac*_*aco的帖子

将数据从服务发送到其他活动的BroadcastReceiver(Xamarin Android)

Location从服务发送到自定义BroadcastReceiver时遇到问题.

这是我的BroadcastReceiver.cs

[BroadcastReceiver]
class MyBroadcastReceiver : BroadcastReceiver
{
    public static readonly string GRID_STARTED = "GRID_STARTED";
    public event EventHandler<OnLocationChangedEventArgs> mOnLocationChanged;
    private Location location;
    public override void OnReceive(Context context, Intent intent)
    {
        if (intent.Action == GRID_STARTED)
        {
            Toast.MakeText(context, "Grid Started", ToastLength.Short).Show();
            //location = JsonConvert.DeserializeObject<Location>(intent.GetStringExtra("location"));
            //mOnLocationChanged.Invoke(this, new OnLocationChangedEventArgs(location));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在上面的代码中取消两行,我的应用程序突然停止.我无法告诉你错误是什么,因为在开发Xamarin应用程序时,调试是由内部错误停止的(我在Xamarin论坛上读过它但是没时间处理它).

这就是我在服务中所做的:

private void BroadcastStarted(Location location)
{
        Intent BroadcastIntent = new Intent(this, typeof(MyBroadcastReceiver));
        BroadcastIntent.PutExtra("location",JsonConvert.SerializeObject(location));
        BroadcastIntent.SetAction(MyBroadcastReceiver.GRID_STARTED);
        BroadcastIntent.AddCategory(Intent.CategoryDefault);
        SendBroadcast(BroadcastIntent);
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Newtonsoft.Json发送一个对象.任何帮助,将不胜感激.

更新:

好吧,不知怎的,我设法揭示错误:

无法找到用于Android.Location.Location类型的构造函数.一个类应该有一个默认的构造函数,一个带参数的构造函数或一个用JsonConstructor属性标记的构造函数.

更新:

整个服务代码:

using Newtonsoft.Json;

namespace GoogleMaps
{ …
Run Code Online (Sandbox Code Playgroud)

c# service android broadcastreceiver xamarin

5
推荐指数
1
解决办法
4850
查看次数

标签 统计

android ×1

broadcastreceiver ×1

c# ×1

service ×1

xamarin ×1