如何在广播接收器中启动服务?

时间:2015-02-07 07:40:31

标签: android

我想在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

        }



    }
};

3 个答案:

答案 0 :(得分:4)

可能跟随线路导致问题:

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

因为this表示onReceive方法的上下文

使用context代替this作为Intent构造函数的第一个参数:

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

答案 1 :(得分:3)

您缺少Context ..

更改这两行

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

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

答案 2 :(得分:1)

只需使用这些行

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