2012-03-02 71 views
0

我想从广播接收器为自定义意图启动活动。我不想要该活动的多个实例,所以我不使用新的任务标志。从应用程序上下文注册的braodcast接收器启动活动

我已经在清单中注册了这些接收器。我收到错误

"03-02 12:54:58.634: W/System.err(3763): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?" 

我应该在哪里注册我的接收器?当尝试注册活动时,接收者可以启动活动。
在清单中注册时可能会出错?

回答

2

请使用下面的代码,

public void onReceive(Context context, Intent intent) 
{ 
    System.out.println ("Application Started"); 
    // put your TimerTask calling class here 

    try 
    { 
     Intent myIntent = new Intent (context, AutoStartExampleActivity.class); 
     myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(myIntent); 
    } 
    catch (Exception e) 
    { 
     System.out.println (" Error while Starting Activity " + e.toString()); 
    } 
} 
0

注册的接收器在Android清单文件

<receiver android:name="com.example.XYZReceiver"></receiver> 
0

这是因为Activity覆盖ContextstartActivity()方法,所以如果你在一个叫startActivity()活动,不会有任何问题,但是如果您从context中调用它,则应该将国旗FLAG_ACTIVITY_NEW_TASK添加到意图。

相关问题