2011-10-06 84 views
1

您必须从BroascastReceiver或服务启动一个新的活动,但我发现无法启动无活动上下文活动的错误。从BroadcastReceiver或服务类别开始新的活动

我用下面的代码

Intent i=new Intent(this,MyActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(i); 

而且还包括在Mainifest文件中的活动,

请解决这个问题,

而另一个第二个问题是,我开始广播接收器内的服务但是当BroadcastReceiver生命周期完成时,此服务完成。我想永葆Serive

请帮我在这

回答

2

尽管我无法为您的第一个问题提供解决方案,但我会回答第二个问题。

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent intent = new Intent(context, SampleService.class); 
    context.getApplicationContext().startService(intent);  
} 

此外,Android SDK开发人员don't recommend从广播接收器或服务开始活动。

+0

感谢工作得很好,我接受你的答案,它的好,现在我没有必要启动活动 –

2

使用context,而不是this这样的:

Intent i=new Intent(context,MyActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

manifest文件中注册您的服务,并使用startservice

+0

我使用的情况下,但问题同样存在 –

0

此代码为我

public void onReceive(Context context, Intent intent) { 
    Log.v(Tag, "Start Listening Phone Call"); 
    TelephonyManager tm = (TelephonyManager) context 
      .getSystemService(Context.TELEPHONY_SERVICE); 

    switch (tm.getCallState()) { 
    case TelephonyManager.CALL_STATE_IDLE: 
     Log.v(Tag, "No call"); 
     break; 
    case TelephonyManager.CALL_STATE_RINGING: 
     Log.v(Tag, "A new call arrived and is ringing or waiting"); 
     Intent i = new Intent(context,MyActivity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
     break; 
    }