我正在使用以下代码来注册接收器,但它显示了一个错误的说语法错误或标记,错误的构造函数这是……的代码我也希望这个运行,即使应用程序是关闭
<标题> MyService.java h1> div class="one_answers"> public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
if (!registered) {
MyBroadcast mybroadcast=new MyBroadcast();
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_ON));
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
private class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO some code here
}
}
}
标题>
你必须先定义你的接收器,然后注册它:
BroadcastReceiver mybroadcast = new BroadcastReceiver (){
@Override
public void onReceive(Context context, Intent intent) {
//define what you want the receiver to do when it is called
}
};
然后注册:
registerReceiver(mybroadcast, new IntentFilter(Intent.ACTION_SCREEN_OFF));
如果你想要放置两个IntentFilter,那么这样做:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction((Intent.ACTION_SCREEN_OFF));
intentFilter.addAction((Intent.ACTION_SCREEN_ON));
registerReceiver(mybroadcast, intentFilter);
如果你不注销接收器,你会得到新的异常或警告,同时你希望服务继续工作,所以在onDestroy:
中注销接收器。/*
* (non-Javadoc)
*
* @see android.app.Service#onDestroy()
*/
@Override
public void onDestroy() {
unregisterReceiver(mybroadcast);
super.onDestroy();
}
onCreate()
方法缺少右括号}
。格式化可以帮助您修复这类错误。你还没有完全向我们展示你所做的一切。请点击此链接了解