Nit*_*sal 2 android broadcastreceiver
首先,我已经尝试添加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?
"
Run Code Online (Sandbox Code Playgroud)
即使我添加了此标志。以下是代码:
服务部分:
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)
{
}
Run Code Online (Sandbox Code Playgroud)
接收器部分:
@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);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我无法弄清楚最近一个小时了!!
提前感谢...
使用
mContext.startActivity(mI);
Run Code Online (Sandbox Code Playgroud)
代替
mContext.startActivity(data);
Run Code Online (Sandbox Code Playgroud)
从开始活动,onReceive因为您正在向意图添加FLAG_ACTIVITY_NEW_TASK标志,mI但尝试使用data意图开始活动
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |