寄存器接收器错误的解决方案



我正在使用以下代码来注册接收器,但它显示了一个错误的说语法错误或标记,错误的构造函数这是……的代码我也希望这个运行,即使应用程序是关闭

<标题> 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()方法缺少右括号}。格式化可以帮助您修复这类错误。你还没有完全向我们展示你所做的一切。请点击此链接了解

最新更新