首先,我已经尝试添加flag_activity_new_task,但仍无效。
这是流程: 我有一个运行的服务,它在后台线程上执行http请求并获取数据。每当收到某些数据时,我都需要将其显示给用户(例如,可以更新应用程序)。为此,我使用广播,并设置了接收器。一切都很好,直到这里。
但是,当我从这个接收器开始活动时,应用程序崩溃说:
"01-15 17:03:30.129: E/AndroidRuntime(28014): Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
"
即使我添加了这个标志。以下是代码:
服务部分:
try
{
JSONObject mAdDetails = mResult.getJSONObject(Tags.TAG_RPC_SMALL_AD_DETAILS);
Intent mI = new Intent();
mI.setAction(ReceiverAdvertSmall.INTENT_ACTION);
mI.putExtra(AppMapKeys.KEY_AD_HEADING, mAdDetails.getString(Tags.TAG_RPC_AD_HEADING));
mI.putExtra(AppMapKeys.KEY_AD_DESCRIPTION, mAdDetails.getString(Tags.TAG_RPC_AD_DESCRIPTION));
mI.putExtra(AppMapKeys.KEY_AD_LINK, mAdDetails.getString(Tags.TAG_RPC_AD_LINK));
sendBroadcast(mI);
}
catch(JSONException e)
{
}
接收方部分:
@Override
public void onReceive(Context mContext, Intent data)
{
Intent mI = new Intent(mContext, ActivityAdvertSmall.class);
mI.putExtras(data.getExtras());
mI.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(data);
}
我做错了什么?我最近一小时都弄清楚了。!!
提前完成了......
答案 0 :(得分:5)
使用
mContext.startActivity(mI);
而不是
mContext.startActivity(data);
从onReceive
启动活动,因为您要向FLAG_ACTIVITY_NEW_TASK
意图添加mI
标记,但尝试使用data
意图启动活动
答案 1 :(得分:3)
您应该将您创建的意图传递给startActivity()
mContext.startActivity(mI);
答案 2 :(得分:0)
好的......这是我犯的最愚蠢的错误。我错误地使用了startActivity(data)
而不是startActivity(mI)
。结束这个问题。
答案 3 :(得分:0)
将您创建的意图传递给 startActivity()
mContext.startActivity(mI);