2015-02-07 70 views
0

我想在BroadcastReceiver中启动Service,但是这段代码会报错。如何在广播接收器中启动服务?

那么..我能做些什么?

BroadcastReceiver sn_english= new BroadcastReceiver() { 
    public void onReceive(Context context, Intent intent) { 

     if(intent.getAction().equals("br1")) 
     { 

      //br1 EVENT 

     } 
     else if(intent.getAction().equals("br2")) 
     { 

      //start Service Here 
      intent = new Intent(this, English_Service.class); 
      startService(intent); 

      //br2 EVENT 

     } 



    } 
}; 
+0

什么是你面临的问题? – 2015-02-07 07:42:10

+0

除了使用上下文而不是此的正确答案之外,如果您尚未完成,请在清单中注册该服务。 – Opiatefuchs 2015-02-07 07:46:34

回答

4

可能以下行引起问题:

intent = new Intent(this, English_Service.class); 

因为this意味着onReceive方法的情况下

使用context,而不是作为this第一个参数Intent构造:

​​
3

你缺少Context ..

改变这两条线

intent = new Intent(this, English_Service.class); 
startService(intent); 

​​
1

只需使用这些线

intent = new Intent(getApplicationContext(), English_Service.class); 
getApplicationContext().startService(intent);