Android 从服务发送的广播接收器启动活动时应用程序崩溃

Android 从服务发送的广播接收器启动活动时应用程序崩溃,android,broadcastreceiver,Android,Broadcastreceiver,首先,我已经尝试过添加flag_activity_new_task,但仍然不起作用 以下是流程: 我有一个正在运行的服务,它在后台线程上执行http请求并获取数据。每当收到某些数据时,我都需要将其显示给用户(例如,应用程序的更新可用)。为此,我使用广播,并设置了一个接收器。在这之前一切都很顺利 但是,当我从这个接收器启动一个活动时,应用程序崩溃了,说: "01-15 17:03:30.129: E/AndroidRuntime(28014): Caused by: android.util.An

首先,我已经尝试过添加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);
}
我做错了什么?在过去的一个小时里,我都想不出来了


Thanx提前…

您应该将创建的意图传递给
startActivity()

使用

而不是

 mContext.startActivity(data);

对于从接收时开始的活动,因为您正在向
mI
intent添加
FLAG\u Activity\u NEW\u TASK
FLAG,但试图使用
data
intent

启动活动,这是我犯的最愚蠢的错误。我错误地使用了
startActivity(data)
而不是
startActivity(mI)
。结束问题。

只需将您创建的意图传递给startActivity()

 mContext.startActivity(mI);
 mContext.startActivity(data);
 mContext.startActivity(mI);