我想在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 :(得分: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);