Android:从BroadcastReceiver启动一个Activity

时间:2013-04-12 13:54:23

标签: android android-activity broadcastreceiver android-broadcast

我想从BroadcastReceiver开始一个活动。问题在于,当我尝试启动它时,我得到一个异常,它告诉我添加“FLAG_ACTIVITY_NEW_TASK”标志,因为我的Receiver已注册到服务而不是注册到Activity。 所以,我将我的代码修改为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);
}

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

3 个答案:

答案 0 :(得分:1)

我认为问题出在旗帜上,就像这样使用

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

但您使用了addFlags()函数。

答案 1 :(得分: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>

它应该可以解决您的问题!

答案 2 :(得分:0)

我想这只是一个错字。

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