Android 屏蔽广播接收器在单独过程中未在服务内部触发

Android 屏蔽广播接收器在单独过程中未在服务内部触发,android,broadcastreceiver,Android,Broadcastreceiver,这是我的东西: public class NotificationSystem extends Service implements Runnable { private final Thread worker = new Thread(this); private boolean alreadyRunning = false; @Nullable @Override public IBinder onBind(Intent intent) {

这是我的东西:

public class NotificationSystem extends Service implements Runnable {

    private final Thread worker = new Thread(this);
    private boolean alreadyRunning = false;

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        IntentFilter filter = new IntentFilter();
        ScreenManager screenManager = new ScreenManager();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(screenManager, filter);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (!alreadyRunning) {
            worker.start();
            this.alreadyRunning = true;
        }
        return START_STICKY;
    }

    @Override
    public void run() {

        while(true) {

            System.out.println("Thread doing stuff");

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

    private static class ScreenManager extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            System.out.println("Screen is off");
        }
    }

}
当屏幕关闭时,广播接收器从不点火,为什么

如果服务中有广播接收器,是否有问题?我是否需要清单中的任何东西来关闭
屏幕


这是安卓核心团队代替我做的又一个神奇的决定吗?也许发射广播接收器会耗尽电池,对吗?

我不太明白你的问题,但我知道了你的许可问题的答案

要使用广播接收器,您始终需要授予AndroidManifest.xml权限,该权限允许您侦听接收器中的状态更改。同时在清单文件中注册接收人

新增内容如下:

<uses-permission android:name="android.permission.READ_PHONE_STATE" >

我希望这有帮助

这是一个固件错误

它在我的手机上不起作用,但在模拟器上可以正常工作

算了吧