从广播接收器呼叫另一项活动

时间:2017-05-31 12:50:25

标签: android broadcastreceiver

我正在构建一个应用程序,它在后台线程中以10秒的间隔监视GPS位置,并根据某些标准对其进行测试,如果测试成功,则会向广播接收器发送消息。接收器的以下代码从后台线程获取纬度和经度,并且只需在toast中显示结果就可以正常工作。

package com.barney.gpstracking;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;

public class PosReceiver extends BroadcastReceiver {
    double lat, lon;
    String slat, slon;

    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle params = intent.getExtras();
        if (params != null) {
            lat = params.getDouble("lati");
            slat = String.valueOf(lat);
            lon = params.getDouble("long");
            slon = String.valueOf(lon);
        }
        Toast.makeText(context, "Position is:" + lat + "  " + lon, Toast.LENGTH_LONG).show();
    }
}

但是,如果我通过调用替换toast来启动另一个活动,如下所示:

            lon = params.getDouble("long");
            slon = String.valueOf(lon);
        }
        Intent goPop=new Intent(context,PopUpActivity.class);
        context.startActivity(goPop);
    }
}

然后它在我的设备上编译并安装好,但是一旦它尝试接收广播,我就会收到运行时错误。如果我尝试从其他地方调用它(例如来自主要活动),我试图调用的PopUpActivity工作得很好。我猜因此上面的goPop意图是不正确的。我已经查看了类似问题的建议,但我无法弄清楚问题。有人可以帮帮我吗?

0 个答案:

没有答案