0

我想从广播接收器开始一个活动。问题是,当我尝试启动它时,我收到一个异常,告诉我添加“FLAG_ACTIVITY_NEW_TASK”标志,因为我的接收器已注册到服务而不是活动中。因此,我将代码修改为 BroadcastReceiver 类:

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
    Intent start=new Intent(context,MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(start);
}

但我的活动没有开始。有谁可以解释我为什么会出现这种行为?

4

3 回答 3

1

你可以使用这个:-

 @Override
public void onReceive(Context context, Intent intent) {


   intent.setClass(context, nextgoingactivity);
    intent.putExtra("sipcallid", sipAddress); // your data
 intent.putExtra("sipAddress", sipcallid);  // your data
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent); 

}

并更新您的 AndroidManifesh.xml,

 <receiver android:name=".IncomingCallReceiver" android:label="Call Receiver">
        <intent-filter>
            <action android:name=".nextgoingactivity"/>
        </intent-filter>
     </receiver>

它应该可以解决您的查询!

于 2013-04-12T14:18:15.727 回答
1

我认为问题出在标志上,它是这样使用的

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

但是你已经使用了addFlags()函数。

于 2013-04-12T13:56:21.713 回答
0

我想这只是一个错字。

你必须打电话start.addFlags(),不是intent.addFlags()

于 2013-04-12T14:04:39.403 回答