0

我想从BroadcastReceiver开始活动。问题是,当我尝试启动它时,我收到一个异常,它告诉我添加“FLAG_ACTIVITY_NEW_TASK”标志,因为我的Receiver已注册到Service中,而不是注册到Activity中。 所以,我修改了代码到广播接收器类:Android:从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); 
} 

但我的活动不会启动。有没有人可以解释我为什么得到这种行为?

回答

0

我想这只是一个错字。

您必须致电start.addFlags()而不是intent.addFlags()

+0

是的,那是我的(愚蠢的)问题! – user1071138

+0

@ user1071138如果这解决了你的问题,为什么你不接受这个答案;) – tnj

1

我认为这个问题是标志,它是这样使用

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

,但你已经使用addFlags()功能。

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> 

应该解决您的查询!