我正在构建一个应用程序,它在后台线程中以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意图是不正确的。我已经查看了类似问题的建议,但我无法弄清楚问题。有人可以帮帮我吗?